当不可观察时绑定对象的列表属性是否有最佳实践方法?例如,如果我们有:当属性不可观察时绑定
public class Band
{
public string Name { get; set; }
public List<Musician> Members { get; private set; }
// other properties here
}
如果我的视图模型具有Band
财产,我想我的UI绑定到Members
财产,如何在用户界面上显示更新到Members
财产?成员不可观察。
目前的想法是创建一个DTO,它是Band
类的精确副本,但是使Members
为ObservableCollection
。然后UI将绑定到这个DTO。在视图模型关闭之前,它会将DTO映射回适当的Band
类。这似乎是一个开销。有没有更好的办法?
编辑 - 另一种选择
我只是进行了座谈,在人,用别人这件事。这个想法是在视图模型上添加一个ObservableCollection
属性。然后,在视图模型的构造函数中,使用实体来填充ObservableCollection
。用户完成编辑后,使用更新的ObservableCollection
重置实体上的List
。
我打算建议在ViewModel中放置可观察属性,但是从编辑中可以看出,您已经在实现这一目标。毕竟,ViewModel是为了模型化视图,所以应该在可观察的属性在一个完美的MVVM世界:) – Rachel