
一个
ObservableCollection可以从用户界面酷似任何集合进行更新。真正的区别非常简单:
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不是可选选项:但是,您可以使用
ObservableCollections和
ICollectionView(并且
IPagedCollectionView我记得很好)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)