拥有 List<T>
的最佳实践是什么?需要在UI上展示的业务层?我目前将数据绑定(bind)与 ObservableCollection<T>
一起使用在复制 List<T>
数据的 View 模型中.明显的问题是当 List<T>
在业务层修改ObservableCollection<T>
需要重新创建,因此 List<T>
的更改反射(reflect)在用户界面中。这不是最好的方法。
我也不会接受使用 ObservableCollection<T>
在业务层作为答案。
谢谢!
最佳答案
如果你坚持要
List<T>
和通知列表修改的单独事件,那么复制是唯一明智的方法。如果你有
ListChanged
没有关于实际更改内容的详细信息的事件,您可以避免重复,只需将列表包装在实现INotifyCollectionChanged
的代理集合中将触发适当的界面CollectionChanged
NotifyCollectionChangedAction.Reset
中的事件模式。如果您有粒度
ItemChanged
,ItemAdded
等事件,那么你实际上是在复制ObservableCollection<T>
功能。在这种情况下,您可以将您的应用程序包装在一个实现INotifyCollectionChanged
的代理集合中。接口(interface),但它了解您的体系结构并将事件转换为适当的NotifyCollectionChangedAction
.
拥有
ObservableCollection<T>
在业务层根本不是一个坏主意。它是一个专门的集合,提供通用接口(interface)来通知项目更改,而不是专门为 WinForms 或 WPF 或其他任何设计的类。
关于c# - 模型列表<T> 和 ViewModel ObservableCollection<T> 重复数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22202275/