WPF框架之MVVM系列(一)
(一)定义:MVVM(Model-View-ViewModel)是在MVC(Model-View-Control)模式之后引出的新的开发模式,他与MVC模式一样用于把视图(界面)和数据进行解耦,不同的是采用ViewModel来完成数据与视图的双向绑定,通过自动化的方式承担大部分数据工作,来解决由于界面复杂化和快速迭代带来的问题。它的技术模型如下图所示
(二)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 类层次图
3.2 应用场景举例
项目用到DataGridView,用它绑定数据源后,如果数据源中的数据修改无法及时刷新到控件上,必须切换单元格的焦点才能导致刷新显示新数值,用INotifyPropertyChanged解决此问题。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
代码分析//Step1:定义一个类: