将List和ObservableCollection合并

本文关键字:合并 ObservableCollection List | 更新日期: 2023-09-27 18:30:01

我有一个WPF应用程序,它包含一个绑定到List的数据网格。My List实现了INotifyPropertyChanged接口。这样我就可以看到一处房产何时发生了变化。但是,当添加或删除新项目时,没有任何事件可以告诉我发生了这种情况。

在阅读后,我看到了一个ObservableCollection可以告诉我何时通过CollectionChanged事件添加或删除了一个项目。然而,ObservableCollection有一些缺点是列表所克服的。

所以我的问题是,是否有可能将List&ObservableCollection让您同时具备这两种功能?是否可以让List从继承?如果是,是否有任何方法需要重写?

将List和ObservableCollection合并

问题的简单答案是"是的,但需要一些工作"。

ObservableCollection<T>类扩展了Collection<T>类,后者实现了IList<T>ICollection<T>IEnumerable<T>IListICollectionIEnumerable接口,与List<T>类相同。然而,ObservableCollection<T>类还实现了INotifyCollectionChangedINotifyPropertyChanged接口,因此这是两者之间的主要区别。

因此,您可以扩展List<T>类,并自己手动实现INotifyCollectionChangedINotifyPropertyChanged接口,以实现两者的最佳效果。话虽如此,在手动将AddRangeSort方法添加到我的自定义ObservableCollection<T>基类之后,我从未觉得有必要在任何WPF项目中使用List<T>来显示对象。