ObservableCollection和BindingList之间的区别
我想知道和之间的区别ObservableCollection,BindingList因为我都曾用两者来通知Source中的任何添加/删除更改,但实际上我不知道何时比另一个更喜欢一个。
为什么我要选择以下一项?
ObservableCollection<Employee> lstEmp = new ObservableCollection<Employee>();要么
BindingList<Employee> lstEmp = new BindingList<Employee>();回答:
一个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我记得很好)。
以上是 ObservableCollection和BindingList之间的区别 的全部内容, 来源链接: utcz.com/qa/429364.html
