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