可以ObservableCollection
像任何集合一样从 UI 更新。真正的区别相当简单:
ObservableCollection<T>
实现INotifyCollectionChanged
在集合更改时提供通知(您猜对了^^)它允许绑定引擎在更新时更新 UI ObservableCollection
。
但是,BindingList<T>
实现IBindingList
.
IBindingList
提供有关集合更改的通知,但不仅如此。它提供了一大堆功能,UI 可以使用这些功能提供更多的东西,而不仅仅是根据更改更新 UI,例如:
- 排序
- 搜索
- 通过工厂添加(AddNew 成员函数)。
- 只读列表(CanEdit 属性)
所有这些功能在ObservableCollection<T>
另一个区别是BindingList
在其项目实施时中继项目更改通知INotifyPropertyChanged
。如果一个项目引发了一个PropertyChanged
事件,则将接收它并BindingList
引发一个ListChangedEvent
与(如果项目被替换,)。不中继项目通知。ListChangedType.ItemChanged
OldIndex=NewIndex
OldIndex=-1
ObservableCollection
请注意,在 Silverlight 中,BindingList
不能作为选项使用:但是您可以使用ObservableCollection
s 和ICollectionView
(IPagedCollectionView
如果我没记错的话)。