当咱们在开发WPF,SilverLight,WP程序时,会使用Mvvm这一架构模式。它是一个很笼统的架构模式概念。在.Net下,我所知道的Mvvm框架有架构
其中MvvmLight是三者中最简单,但也是最完美诠释Mvvm架构模式的框架。Caliburn.Micro和Prism除了提供基本的Mvvm架构模式以外,提供了其余更加丰富的功能,有兴趣的同窗能够前往研究。
本文主要从MvvmLight入手。框架
Mvvm是Model-View-ViewModel的缩写。这个模式中的核心就是View,ViewModel,Model三者之间的组织和联系。mvvm
View测试
即视图,WPF中以Window,UserControl,Page做为视图..net
ViewModelcode
视图逻辑,业务逻辑,例如用户在界面上点击一个按钮,那么这个按钮具体作什么事情,就是在这里实现,注意,并非在视图的
后台代码中(.xaml.cs)中来实现.对象
Model开发
数据模型,实体模型,例如一个表示学生的类get
他们之间的关系用一个图能够表示出来
;自动化
这是普通的一个Mvvm运用,总结一下就是:
1.View须要显示的数据来自于ViewModel对Model的组织,WPF中的数据绑定机制会将数据更新到View上
2.View经过Command调用ViewModel中的方法对Model进行操做,完成业务
Mvvm根本的思想就是界面和业务功能进行分离,View的职责就是负责如何显示数据及发送命令,ViewModel的功能就是如何提供数据和执行命令。各司其职,互不影响。假如客户以为这个
界面很差看,那么咱们仅仅是对View做修改,不会影响到ViewModel中的功能代码,减小了犯错的机会。随着功能地增长,系统愈来愈复杂,相应地程序中会增长View和ViewModel文件,将
复杂的界面分离成局部的View,局部的View对应局部的ViewModel,功能点散落在各个ViewModel中,每一个ViewModel只专一本身职能以内的事情。ViewModel包含了View要显示的数据,而且
知道View的交互代码,因此ViewModel就像一个无形的View。
一直以来针对View的自动化测试老是显得很困难,那么测试ViewModel就会很是方便。总结一下,使用Mvvm架构具备如下优点
在Mvvm中有两种理念。
使用两种理念写出来的代码是不同的,因此团队开发中使用其一便可。区分两者最直接的表现就在于如何显示一个View
在MvvmLight中
var view=new AppView();
view.Show();
在Caliburn.Micro中
var viewModel=new AppViewModel();
WindowManager.Show(viewModel);
在MvvmLight中,先建立一个View对象,而后在与之对应的ViewModel绑定,而在CM中,有个名为WindowManager的类会帮咱们
去找到与ViewModel对应的View。后面我也会花时间整理一个CM的总结。
下一篇会针对MvvmLight进一步分析,主要是一些示例代码,它是一个很简单的框架,快速学会使用它 用好它,可以扩展的地方会详细一点.