【发布时间】:2010-12-09 23:16:26
【问题描述】:
我试图将 MVVM 设计模式与 WPF 和实体框架一起使用来创建一个简单的应用程序。如果这些类是松散耦合的,那么一切都很好,但是如果我有的话。像两个模型类:客户和地址,客户有一个地址集合。
现在对于这些类,我需要创建两个 VM 类 - CustomerVM 和 AddressVM。 CustomerVM 应该有 AddressVM 对象的 ObservableCollection。对这些 VM 类(包括 CustomerVM 和 AddressVM 上的所有 CRUD 操作)所做的每一项更改都需要反映在模型类中——这就是为什么我最终编写了一堆代码,例如。订阅 ObservableCollection 的 changed 事件,如果添加了新对象,则将新对象添加到模型中......等等......
怎么办?这在使用 MVVM 时是否常见?我做的一切都好吗?如何减少如此简单的类层次结构所需的代码量?是否有任何框架可以创建与层次结构中的其他类“表现良好”的基本 VM 类?如果类关系变得更复杂怎么办?
或者说简单点:
如何在模型集合中反映 vm 集合中所做的更改:
CustomerVM1.AdressesVM.Add(new AddressVM{City="New York"})
应该导致相当于:
Customer1.Adresses.Add(new Address{City="New York"})
反过来也有同样的问题 - 如何反映对模型中的集合所做的更改以包含在视图模型中,但我对第一个更感兴趣,因为它具有更实际的应用程序和 vm在大多数情况下,对象可以简单地重新创建。
【问题讨论】: