WPF - MVVM:复制所有模型属性或公开模型

时间:2015-08-18 13:39:47

标签: c# wpf mvvm architecture

我要开始一个新的应用程序,我现在问自己是否有一些关于如何通过ViewModel将我们的模型绑定到视图的最佳实践。

目前,我看到两个选项:

  1. 我的ViewModel复制了必须绑定到View
  2. 的每个字段
  3. 我的ViewModel公开了一个Model对象实例,ViewModel的不同属性绑定在该实例上。
  4. 我可以看到:

    在ViewModel中复制模型属性

    优点:

    • 我明确区分了View和Model
    • 之间的关注点
    • 我可以在这里实现所有验证机制

    缺点:

    • 它会复制很多代码(我们为现有解决方案创建一个新客户端,目前我们有超过1000个模型)
    • 要编写更多代码=维护更多=更多错误

    在ViewModel中公开模型属性

    优点:

    • ViewModel将更加关注如何检索和保存模型
    • ViewModel阅读更清晰
    • 实施
    • 的时间要少得多

    缺点:

    • 不确定模型是数据验证的最佳位置

    因此,您可以提供给我的任何指导,或者同时拥有这两个世界的方式都将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

@ j4n尝试使用 INotifyPropertyChanged 实现MODEL,并尝试在类中包装Model的大陆,以便在其中使用 observablecollection 。使用observablecollection减少重复属性

答案 1 :(得分:0)

我不会复制视图模型中所需的值,但它确实取决于模型的外观以及您希望视图的外观。在视图模型上创建包装模型属性的属性。