试图了解WindowsForms和WPF之间的DataGrid绑定的不同行为

时间:2016-05-29 09:48:59

标签: c# wpf winforms

在我使用的Windows窗体中:

dataGridView.DataSource = new BindingList<MyItem>();

WPF中的等价物似乎是:

dataGrid.ItemsSource = new BindingList<MyItem>();

我不明白(也许我做错了)是在WPF案例中,绑定似乎不是双向的。也就是说:当我修改MyItem时,它不会自动反映在视图中。

1 个答案:

答案 0 :(得分:1)

  1. 使用ObservableCollection<MyItem>

  2. MyItem必须实施INotifyPropertyChanged并在其任何属性值更改时引发PropertyChanged

  3. 那将更新网格单元格。

    1. 如果您计划对WPF做很多事情,请学习MVVM并使用Binding。将集合分配给属性不会绑定它。
    2. XAML:

      <DataGrid
          x:Name="dataGrid"
          ItemsSource="{Binding MyItemCollection}"
          ... 
          />
      

      如果你真的想为自己做很多额外的工作,你也可以以编程方式创建一个Binding。

      From the Rust book