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
不是可选选项:但是,您可以使用ObservableCollection
s和ICollectionView
(并且IPagedCollectionView
我记得很好)。
以上是 ObservableCollection和BindingList之间的区别 的全部内容, 来源链接: utcz.com/qa/429364.html