MVVM模式由三部分组成;模型,视图和ViewModel.一开始大多数开发人员对模型,视图和ViewModel应该或不应该包含什么以及每个部分的职责有什么困惑.
在本章中我们将了解MVVM模式的每个部分的职责,以便您可以清楚地了解哪种代码在哪里. MVVM实际上是客户端的分层架构,如下图所示.
表示层由视图组成.
逻辑层是视图模型.
表示层是模型对象的组合.
生成并保留它们的客户端服务,可以在双层应用程序中进行定向访问,也可以通过服务调用然后进入您的应用程序.
客户端服务不是MVVM模式的正式部分,但它通常与MVVM一起使用以实现进一步的分离并避免重复代码.
模型职责
一般来说,模型是最容易理解的模型.它是支持应用程序中视图的客户端数据模型.
它由具有属性和某些属性的对象组成用于在内存中包含数据的变量.
其中一些属性可能引用其他模型对象并创建整体为模型对象的对象图.
模型对象应引发属性更改通知,这些通知在WPF中表示数据绑定.
最后一个责任是可选的验证,但您可以通过使用WPF数据绑定验证功能通过INotifyDataErrorInfo/IDataErrorInfo等接口将验证信息嵌入到模型对象中
查看职责
视图的主要目的和职责是定义用户在屏幕上看到的内容的结构.该结构可以包含静态和动态部分.
静态部分是XAML层次结构,它定义控件的控件和布局.视图由以下内容组成.
动态部分类似于动画或状态更改,定义为视图的一部分.
MVVM的主要目标是视图中不应该有代码.
不可能没有代码背后的代码.在视图中你至少需要构造函数和初始化组件的调用.
这个想法是事件处理,动作和数据操作逻辑代码不应该在View中的代码中.
还有其他类型的代码必须在任何需要引用的代码后面的代码中UI元素本质上是视图代码.
ViewModel职责
ViewModel是MVVM应用程序的要点. ViewModel的主要职责是向视图提供数据,以便该视图可以将该数据放在屏幕上.
它还允许用户进行交互使用数据并更改数据.
ViewModel的另一个关键职责是封装视图的交互逻辑,但这并不意味着全部应用程序的逻辑应该进入ViewModel.
它应该能够处理适当的调用顺序,以便根据用户或任何事情做出正确的事情.更改视图.
ViewModel还应管理任何导航逻辑,例如决定何时导航到其他视图.