rya*_*and 9 c# wpf list observablecollection mvvm
List<T>
在业务层中拥有需要在UI上显示的最佳实践是什么?我目前ObservableCollection<T>
在viewmodel中使用数据绑定来复制数据List<T>
.显而易见的问题List<T>
是,在业务层中修改ObservableCollection<T>
需要重新创建的内容,以便List<T>
在UI中反映更改.这不是最好的方法.
我也不会接受ObservableCollection<T>
在业务层中使用an 作为答案.
谢谢!
如果您坚持要通过List<T>
单独的事件来通知列表修改,那么复制是唯一明智的方法.
如果您的ListChanged
事件没有实际更改内容的详细信息,则可以避免重复,只需将列表包装在代理集合实现INotifyCollectionChanged
界面中,该界面将以模式触发相应的CollectionChanged
事件NotifyCollectionChangedAction.Reset
.
如果你有颗粒状ItemChanged
,ItemAdded
等事件,那么你有效的复制ObservableCollection<T>
功能.在这种情况下,您可以将应用程序包装在代理集合实现INotifyCollectionChanged
界面中,但它可以理解您的体系结构并将事件转换为适当的NotifyCollectionChangedAction
.
拥有ObservableCollection<T>
业务层并不是一个坏主意.它是一个专门的集合,提供通知接口来通知项目更改,而不是专门为WinForms或WPF或其他任何设计的类.