我试图使用MVVM设计模式,结合WPF和Entity Framework创建一个简单的应用程序。如果类之间松散耦合,则一切都很顺利,但是如果我有两个模型类:Customer和Address,且Customer具有Address的集合。
现在,对于这些类,我需要创建两个VM类-CustomerVM和AddressVM。CustomerVM应该具有AddressVM对象的ObservableCollection。对这些VM类进行的每个更改(包括对CustomerVM和AddressVM的所有CRUD操作)都需要反映在模型类中-这就是为什么我最终编写了大量代码的原因,例如订阅ObservableCollection的更改事件,如果添加了新对象,则添加一个新对象到模型...等等...
怎么办?使用MVVM时是否常见?我做得对吗?如何减少所需的代码量以处理此类简单的类层次结构?是否有任何框架可以创建基本的VM类,并且与层次结构中的其他类“良好地运作”?如果类关系变得更加复杂,该怎么办?
简而言之:
如何在vm集合中反映对模型集合所做的更改:
现在,对于这些类,我需要创建两个VM类-CustomerVM和AddressVM。CustomerVM应该具有AddressVM对象的ObservableCollection。对这些VM类进行的每个更改(包括对CustomerVM和AddressVM的所有CRUD操作)都需要反映在模型类中-这就是为什么我最终编写了大量代码的原因,例如订阅ObservableCollection的更改事件,如果添加了新对象,则添加一个新对象到模型...等等...
怎么办?使用MVVM时是否常见?我做得对吗?如何减少所需的代码量以处理此类简单的类层次结构?是否有任何框架可以创建基本的VM类,并且与层次结构中的其他类“良好地运作”?如果类关系变得更加复杂,该怎么办?
简而言之:
如何在vm集合中反映对模型集合所做的更改:
CustomerVM1.AdressesVM.Add(new AddressVM{City="New York"})
应该导致相当于:
Customer1.Adresses.Add(new Address{City="New York"})
另外还有一个相反的问题 - 如何将对集合所做的更改反映到模型中以包含在视图模型中,但我更感兴趣的是第一个问题,因为它具有更实际的应用,而且vm对象在大多数情况下可以简单地重新创建。