在MV-VM中同时拥有Model和ViewModel有什么意义?

Cui*_*崔鹏飞 7 wpf xaml mvvm

我总觉得将模型和视图模型放在一个类中是很诱人的,我没有看到这样做的缺点.

必须有充分的理由将它们分开.我错过了什么?

WPF*_*-it 7

ViewModel是ie 的软拷贝,View如果你有一个可更新ListBox的视图,你将ObservableCollection在ViewModel中有一个代表列表框中项目列表的.同样,如果你有Button你的View,在VM将其持有的Command.

Model实际上将View显示的数据是什么.所以你的类型集合VM可以被称为Model类.

例如a Employees ListView是a View,并且具有数据上下文,该数据上下文是具有EmployeeViewModel类的ObservableCollection属性的Employee类的实例,其中Employee类变为a Model.

通常有1-1之间关系ViewVM和之间1-N的关系VMModel.


Ebe*_*eer 2

这样做的第一个真正的缺点是缺乏关注点分离。很快这就会导致冗余代码。也就是说,我已经多次看到开发人员将他们的 Model 对象用作 ViewModel。如果我们对自己完全诚实,在一个非常薄的应用程序中,分离这些概念实际上会导致更多的冗余。

您能做的最好的事情就是了解有关 MVVM 的更多信息,以及它在 MVC 和表示模型中的根源,但我认为您提出这个问题并且没有盲目遵循教条是一件很棒的事情。事实上,当我开始开发一个小应用程序时,我常常根本不开始使用 MVVM。我通常会从代码隐藏中的一百行左右开始,证明一个概念,然后开始将其重构到 MVVM 中。

更重要的是,从概念意义上讲,模型和视图模型具有非常不同的目的。模型包括业务逻辑(领域逻辑)、数据模型(对象、属性和关系)和数据访问层。ViewModel 本质上是模型的适配器,针对视图的特定目的进行调整。在某些情况下,对于给定的数据模型对象,您可能有 3 个不同的视图(和视图模型)。每个视图模型都会为了该特定视图的特定目的而调整模型对象上的相同属性。