WPF框架之MVVM系列(一)

(一)定义:MVVM(Model-View-ViewModel)是在MVC(Model-View-Control)模式之后引出的新的开发模式,他与MVC模式一样用于把视图(界面)和数据进行解耦,不同的是采用ViewModel来完成数据与视图的双向绑定,通过自动化的方式承担大部分数据工作,来解决由于界面复杂化和快速迭代带来的问题。它的技术模型如下图所示

暴风截图201792758096098

(二)MVVM技术框架
根据MVVM模型框架定义的逻辑体系, MVVM技术框架提供视图模型(ViewModel)、数据模型(Model、Collection)和服务(Service)四个组件来构建开发者的MVVM开发体系。
   MVVM.Service
Service主要负责与后端服务器进行通讯的处理。
   MVVM.Model
Model就是系统中的业务实体,是对现实中事物的抽象,开发过程中涉及到的事物都可以抽象为Model,例如客户实体中含有客户的姓名、编号、电话、住址等属性也对应了实体类中的Property,客户的下订单、付款等行为对应了实体中的方法。
   MVVM.Collection
Collection 是用来维护一个 Model的集合,它主要用于维护的是一个可以增加、删除、排序筛选的数据列表。例如订单列表、商品列表等。这些数据列表都不会在一次访问中加载完成,用户需要进行翻页等操作,这些操作触发数据更新并附加或更新到 Collection 中。Model 中的数组主要用于维护一个对象的一些不经常变化的列表属性,例如衣服对象的尺码列表、一个电脑的硬盘大小选项等,这些属性经常不需要动态添加,而是直接一次获取和展现。
   MVVM.ViewModel
ViewModel是Model、Collection与XAML(View)的中间处理机,他首要完成数据到界面、界面到数据的自动化操作。同时也是用户交互行为事件的处理中心。我们通过代码来了解MVVM对象的使用方式
   MVVM.View
View是系统界面展示,在WPF中即为XAML页面。

(三)INotifyPropertyChanged实现原理

3.1  类层次图
image

3.2  应用场景举例
项目用到DataGridView,用它绑定数据源后,如果数据源中的数据修改无法及时刷新到控件上,必须切换单元格的焦点才能导致刷新显示新数值,用INotifyPropertyChanged解决此问题。

12333

代码分析

3.3  案例分析
image

关于public event PropertyChangedEventHandler PropertyChanged在子类实现的三种方式

(1) 在构造中实现
(2) 无参匿名委托
(3) 有参匿名委托

(四)Microsoft.Practices.Prism.dll>>Microsoft.Practices.Prism.Commands>>DelegateCommand类原理分析

DelegateCommand源码
DelegateCommand《T》源码





参考资料:

http://www.cnblogs.com/guofeiji/p/5277834.html

原文地址:https://www.cnblogs.com/lihuali/p/7591613.html