2010-08-25 55 views
1

我有一個名稱列表,我想綁定到一個數據網格編輯/排序/等。但是,我不喜歡DataGrid的顯示方式。當我真的想要一個自定義訂單時(我希望我可以隱藏ID列或使該列不可編輯),列按字母順序排列。我不知道如何開始做任何的這個...WPF:如何開始使用MVVM構建的DataGrid樣式?

注:我刪除了很多的「共同」代碼(例如:INotifyPropertyChanged的代碼...)

//PersonModel.cs 
public class PersonModel 
{ 
    public Int32 ID { get; set; } 
    public String FirstName { get; set; } 
    public String LastName { get; set; } 
} 

//PersonViewModel.cs 
public class PersonViewModel 
{ 
    public PersonViewModel() 
    { 
     Init(); 
    } 
    public PersonViewModel(ObservableCollection<PersonModel> persons) 
    { 
     Init(person); 
    } 
    private void Init(ObservableCollection<PersonModel> persons = null) 
    { 
     Persons = person ?? new ObservableCollection<PersonModel>(); 
    } 

    public ObservableCollection<PersonModel> Persons { get; set; } 
} 

//PersonView.xaml 
<UserControl ... 

    ... 

    <DataGrid ItemsSource="{Binding Persons}" /> 

    ... 
</UserControl> 

回答

2

除非你告訴它否則,DataGrid通過反射推斷列。如果你想控制的,您可以:

<DataGrid ItemsSource="{Binding Persons}"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="First Name" Binding="{Binding FirstName}"/> 
     <DataGridTextColumn Header="Last Name" Binding="{Binding LastName}"/> 
    </DataGrid.Columns> 
</DataGrid> 
+0

我想你也需要設置'的AutoGenerateColumns = FALSE' DataGrid上,否則將DataGrid會生成初始列除了那些你specifify – Rachel 2010-08-25 15:06:21

+0

+1我發誓,你和WPF博士都是WPF上帝!我特別喜歡你推出的轉換包:) – 2010-08-25 15:20:11

+1

我向你保證:我是凡人。但是不可否認WPF博士的全知;) – 2010-08-25 16:04:37