如何让 BindingSource 知道其 DataSource 的变化?

How to make a BindingSource aware of changes in its DataSource?

我有一个:

someBindingSource.DataSource = someDataSource;

我也是:

someDataSource = foo();

foo() 对具有不同数据的另一个数据源执行 new

我认为每次数据源改变时都进行赋值是不正确的,即:

someDataSource = foo();
someBindingSource.DataSource = someDataSource;

那么有没有办法让 someBindingSource 意识到 someDataSource 的变化?

如果数据源实现了IBindingList inteface, then the BindingSource will be informed of adding or removing items to the data source. A good implementation to use is BindingList<T>.

此外,如果数据源的项目实施 INotifyPropertyChanged,则 BindingSource 也会收到项目更改的通知。

在上述情况下 ListChanged 将引发事件。

备注

  1. 注意,如果你赋值someBindingSource.DataSource = someThing;,然后赋值someThing = new SomeThing();,因为someBindingSource.DataSource指向之前的对象,没有变化也不会有通知。
  2. DataSourceChanged 事件将在您为 BindingSourceDataSource 分配新值后引发,因此在 someThing = new SomeThing(); 之前的情况下,如果您执行 [=16] =] 那么 DataSourceChanged 将被提升。