我有一个:
someBindingSource.DataSource = someDataSource;
我也这样做:
someDataSource = foo();
对于具有不同数据的其他数据源, foo()
会new
。
每次数据源发生变化时,我都不认为这是正确的,即:
someDataSource = foo();
someBindingSource.DataSource = someDataSource;
那么有没有办法让someBindingSource
了解someDataSource
中的变化?
答案 0 :(得分:2)
如果数据源实现IBindingList
接口,则会通知BindingSource
向数据源添加或删除项目。要使用的良好实现是BindingList<T>
。
此外,如果数据源的项目实施INotifyPropertyChanged
,则BindingSource
也会收到有关项目更改的通知。
在上述情况下,ListChanged
事件将被提升。
注意强>
someBindingSource.DataSource = someThing;
然后再指定someThing = new SomeThing();
,因为someBindingSource.DataSource
指向上一个对象,所以没有任何更改,也没有通知。 DataSourceChanged
的{{1}}分配新值后,系统会引发DataSource
事件,因此,如果您执行BindingSource
,则在之前情况someThing = new SomeThing();
之后那么someBindingSource.DataSource = someThing;
将会被提升。