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



在我使用的Windows窗体中:

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

WPF中的等价物似乎是:

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

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

  1. 使用ObservableCollection<MyItem>

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

这将更新网格单元。

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

XAML:

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

如果你真的想为自己做很多额外的工作,你也可以通过编程创建绑定。

ObservableCollection似乎比BindingList有一些改进。

最新更新