2013-10-28 58 views

回答

2

請使用ItemsSource來分配數據集合。我建議你閱讀關於WPF的MVVM實現。但開始...

創建一個實現INotifyPropertyChanged接口

public class Employer : INotifyPropertyChanged 
{ 
    private string nameField; 
    public string Name { 
     get { return nameField; } 
     set { 
      nameField= value; 
      if (PropertyChanged != null) { 
       PropertyChanged(this, new PropertyChangedEventArgs("Name")); 
      } 
     } 
    } 

    private int idField; 
    public int Id { 
     get { return idField; } 
     set { 
      idField= value; 
      if (PropertyChanged != null) { 
       PropertyChanged(this, new PropertyChangedEventArgs("Id")); 
      } 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
} 

類創建一個屬性

private ObservableCollection<Employer> employersField; 
public ObservableCollection<Employer> Employers 
{ 
     get { return employersField; } 
    set { 
     employersField= value; 
     if (PropertyChanged != null) { 
      PropertyChanged(this, new PropertyChangedEventArgs("Employers")); 
     } 
    } 
} 

現在,讓我們在構造函數中說你做

Employers = new ObservableCollection<Employer> { 
     new Employer { 
      Id = 0, 
      Name = "Mike" 
     }, 
     new Employer { 
      Id = 1, 
      Name = "Dave" 
     } 
    } 

讓我們假設你沒有視圖類,所以你的所有屬性都在xaml相關的cs文件中。所以,你需要你的DataGrid的DataContext屬性綁定到你的等級和分配的ItemsSource後,你的財產

<DataGrid DataContext = {Binding ElementName=YourControlName} ItemsSource="{Binding Employers}"> 
your content 
</DataGrid > 

YourControlName是一個用戶控件的名字在XAML!

<UserControl x:Name="YourControlName" > 
all stuff 
</UserControl> 

看,這是一個變化簡短的概述,因爲我沒有告訴你如何你的類屬性綁定到DataGrid列以及如何selectedItem屬性綁定到你的財產。但是你可以在stackoverflow和Internet上找到很多例子。我只是展示瞭如何啓動和事物在WPF

0

對象的構造器的表是如何工作的,如下使用它

class ViewModel 
{ 
    public string[,] Companies 
    { 
     get; 
     set; 
    } 
    public List<Example> Values 
    { 
     get; 
     set; 
    } 
    public ViewModel() 
    { 
     Companies = new string[2, 2] { { "sjhbfsjh", "jshbvjs" }, {"vsmvs", "nm vmdz" } }; 
     Values = new List<Example>(); 
     for (int i = 0; i < 2; i++) 
     { 
      Example ee = new Example(); 
      ee.A = Companies[i, 0]; 
      ee.B = Companies[i, 1]; 
      Values.Add(ee); 
     } 
    } 
} 
public class Example 
{ 
    public string A 
    { 
     get; 
     set; 
    } 
    public string B 
    { 
     get; 
     set; 
    } 
} 

然後在你的Xmal位,你可以做如下

<DataGrid ItemsSource="{Binding Path=Values}"></DataGrid> 

設置數據Xmal.cs中的上下文

DataContext = new ViewModel();