WPF程序中使用MVVM模式

        前两周有个紧急项目,项目到咱们手上时离最后交付日期只有三周,虽然功能很简单就几个页面,但须要作的仍是不少。因而临时找了北京的同事帮忙作界面,咱们这边负责作后台通讯和消息分发。上周合并代码一看,发现界面代码有点乱,各类贴代码的痕迹,有很明显的MVVM框架的样子,但用的有些混乱,看他的代码本身也迷糊了一阵,由于MVVM只是了解点(我还觉得是我理解错了的,咱们前几个项目都是采用Winform的思惟作的项目)。因而花了几个晚上研究了下,并写成 Demo(各位可下载下来对照代码自行研究),以便后用。

        首先什么是MVVM,MVVM解决了什么问题。MVVM是Model、View和链接二者的ViewModel组成,Model负责提供数据的业务逻辑,View负责页面的显示,ViewModel链接View和Model,ViewModel经过调用Model得到页面所须要的数据并经过View中的绑定将数据显示到页面上。数据库

        如何作到页面与逻辑分离的呢,理想状态下,View层的Code-Behind文件中只有在构造函数中调用初始UI元素的一行代码及设置View层的DataContext为对应的ViewModel。这样美工可根据原始设计图去作相应的美化设计,设计好直接替换便可。固然了还有一个好处就是能够方便的进行单元测试。
        一个完整的三层效果以下:
        View层(数据和事件都经过绑定实现):框架

        ViewModel层(注意看圈出来的,圈出来的是View页面所绑定的属性):

        Model层(这里MainModel文件里没有代码,用其余的Model代替看效果):


          项目结构以及最终效果(DataAccess模拟测试所须要的数据,实际项目通常是数据库):
函数



        至此所有完成,只是我的的一些总结,对本身是一个记录,同时但愿也能对别人有些帮助,若是有什么错误,还望不吝指出,共同进步,转载请保留原文地址
单元测试

        源码下载测试