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或其他任何设计的类.