将List和ObservableCollection合并
本文关键字:合并 ObservableCollection List | 更新日期: 2023-09-27 18:30:01
我有一个WPF应用程序,它包含一个绑定到List的数据网格。My List实现了INotifyPropertyChanged接口。这样我就可以看到一处房产何时发生了变化。但是,当添加或删除新项目时,没有任何事件可以告诉我发生了这种情况。
在阅读后,我看到了一个ObservableCollection可以告诉我何时通过CollectionChanged事件添加或删除了一个项目。然而,ObservableCollection有一些缺点是列表所克服的。
所以我的问题是,是否有可能将List&ObservableCollection让您同时具备这两种功能?是否可以让List从继承?如果是,是否有任何方法需要重写?
问题的简单答案是"是的,但需要一些工作"。
ObservableCollection<T>
类扩展了Collection<T>
类,后者实现了IList<T>
、ICollection<T>
、IEnumerable<T>
、IList
、ICollection
、IEnumerable
接口,与List<T>
类相同。然而,ObservableCollection<T>
类还实现了INotifyCollectionChanged
和INotifyPropertyChanged
接口,因此这是两者之间的主要区别。
因此,您可以扩展List<T>
类,并自己手动实现INotifyCollectionChanged
和INotifyPropertyChanged
接口,以实现两者的最佳效果。话虽如此,在手动将AddRange
和Sort
方法添加到我的自定义ObservableCollection<T>
基类之后,我从未觉得有必要在任何WPF项目中使用List<T>
来显示对象。