zhouqijie

MVVM模式

有了基于XAML的应用程序,Model-View-ViewMode(MVVM)设计模式便用于分离视图和功能。该设计模式是由Expression Blend团队的John Gossman发明,能更好地适应XAML。

MVVM改进了MVC和MVP模式,因为它使用了XAML的首选功能:数据绑定



MVVM模式的定义

MVVM模式的起源之一-MVC设计模式分离了视图、模型、控制器。

模型定义视图中显示的数据,以及改变和操纵数据的业务规则。
控制器是视图和模型之间的管理,它会更新模型,给视图发送要显示的数据。当用户请求传入时,控制器就采取行动,使用模型,更新视图。

MVC的基础上发展出了MVP模式。

MVP模式和MVC模式的主要区别:

  1. MVC中视图和模型高度耦合。MVP中视图和模型松散耦合。对于MVC,视图将从模型类而不是MVP中的表示器类获取数据。
  2. MVC中用户输入由控制器处理,控制器指示模型进一步操作。在MVP中由视图处理用户输入,该视图指示Presenter调用相关函数。
  3. MVC中控制器和视图可以不是一对一关系,但是在MVP中视图和Presenter是一对一关系。

这种模式利用数据绑定功能与XAML。通过MVVM,用户和视图交互。视图使用数据绑定来访问视图模型的信息,并在绑定到视图上的视图模型中调用命令。
视图模型没有对视图的直接依赖项。视图模型本身使用模型来访问数据,获得数据的变更信息。



示例解决方案

示例解决方案包含一个WPF和一个UWP应用程序,用于显示和编辑一个图书列表。其中包含的所有项目如下:
BooksAppDesktop –WPF应用程序项目
BooksAppUniversal –UWP应用程序项目 Framework –库文件,包含所有基于XAML的应用程序的类
ViewModels –库文件,包含用于WPF和UWP的视图模型
Services –库文件,包含视图模型使用的服务
Models –库文件,包含共享模型
Repositories –库文件,返回和更新项
Contracts –库文件,用于使用依赖注入的协定接口

(END)