MVVM是Model-View-ViewModel的简写
1、View负责前端展示,与ViewModel进行数据和命令的交互。
2、ViewModel,负责前端视图业务级别的逻辑结构组织,并将其反馈给前端。
3、Model,主要负责数据实体的结构处理,与ViewModel进行交互。
MVVM是一种设计模式,也就是架构,但并非框架级别的东西。由MVP模式与WPF结合的应用方式。类似于目前比较流行的MVC、MVP设计模式,主要目的是为了分离视图(View)和模型(Model)的耦合。所谓的分离视图与模型之间的耦合,意思就是降低视图与模型之间的依赖性,但是依赖性只能降低,不能完全没有。
MVVM模式和有几大优点:
- 低耦合:视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,
当View变化的时候Model可以不变,当Model变化的时候View也可以不变。 - 可重用性:可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑。
- 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面
设计,使用Expression Blend可以很容易设计界面并生成xml代码。
可测试:界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
但是在我看来,MVVM架构最大的优势就是能够实现双向绑定,所谓的双向绑定就是表达的效果就是在界面的操作对数据模型的修改能实时反映到数据;而数据的变更能实时展现到界面。就好比如一个表格,当用户输入筛选条件后,后台进行逻辑处理反馈到数据库进行筛选,筛选出来的数据同时展示到界面给用户。
MVVM最特别的地方就是通过数据绑定和命令来处理UI属性及事件驱动,并非是通过事件来处理UI属性和事件驱动的。命令的作用的最大的特点就是解耦View和ViewModel的行为交互,将视图的显示和业务逻辑分开。所以可以说MVVM的分离视图(View)和模型(Model)的耦合,主要还是命令的作用。
MVVM Light框架可以说是一个专门为MVVM架构而设计的框架,因为它仅仅负责MVVM架构模式的实现,没有其他多余的组件,所以高效、专注、轻量是它的特点。