在MVVM中创建ViewModel的最佳方法

Nav*_*K N 8 .net design-patterns mvvm

假设我有一个叫做的课程Customer.现在我需要在视图上呈现客户.所以我创建CustomerViewModel了用于绑定.我正在寻找创建CustomerViewModel课程的最佳方法.以下是我创建它的想法.

1 - 在视图模型上再次创建客户中的所有属性.将客户实例注入视图模型,每个属性将从该客户对象返回值.这种方法的优点是我可以为所有视图模型创建一个公共基类,并在那里转储常用功能.缺点是在视图模型上再次创建所有属性并进行维护所需的时间.

2 - 从客户处获取视图模型.所以我在视图模型中拥有所有客户的特性.但这不允许我使用公共基类并将常见的视图模型逻辑放在那里.

所以我想知道创建视图模型的最佳方法是什么?有没有比我想象的更好的替代方法?

Chr*_*col 5

您应该考虑阅读Josh Smith关于MVVM 的文章.

他还有一个名为MVVM Foundation的框架,它有一个ViewModel基类.总的来说,我认为他实现ViewModel的方式总体上是最好的.


cod*_*zen 5

选项1要好得多.原因是您希望能够独立地改变这两个层.在您的域模型和视图模型之间建立紧密耦合将在您希望避免的开发过程中引入刚性.

我处理必须编写这么多代码的方式是我没有.我使用T4模板,一些合理的约定(默认情况下,属性显示在视图模型中;域模型类实现INotifyPropertyChanged并向上委托),以及用于处理投影/展平并生成视图模型的配置文件.我还将它们生成为部分类,以便能够根据需要处理添加其他代码.