若是你对MVVM的概念仍是不了解,能够参看下面连接:
http://baike.baidu.com/view/3507915.htmjson
咱们以WPF+MVVM的本地桌面程序为背景,这样一来咱们能够不去操心服务器那部分的事情,更加专一咱们的MVVM。我打算把最重要的部分放到开头来说,而接下来这最重要的部分倒是全篇教程惟一没有代码的部分。好,下面开始。小程序
MVVM不是什么框架,也不是什么代码生成器,它其实就是一种建议而已。不少朋友对于这个词很困惑:到底我怎么样作,个人程序才是一个标准的MVVM模式?其实咱们没有必要去纠结中一点,由于(至少我)尚未见到任何一个程序能实现100%的MVVM。因此咱们须要作的是,理解MVVM,而后采用MVVM的思想+现成的框架去搭建出一个程序便可,至因而不是标准的MVVM,不要过度去纠结。我看到过一些失败的例子:有些人为了实现零输出的后台代码,居然采用一些更加繁琐晦涩的方法来达到此目的——这样就背离了MVVM的初衷了。我我的认为,后台代码不是恶魔,当用则用,但不要滥用。服务器
那么,MVVM是解决全部问题的最终解决方案吗?固然不是。MVVM只解决了界面和数据之间通讯的问题,可是除此之外,通常的程序还面临其余不少问题,例如数据的存储,远程通讯,耦合问题,效率问题,等等。框架
这个教程仍是以一个小程序为例子,而此次我打算用一个功能很是简单的程序来说MVVM:咱们来作一个电话簿。可是首先你要预习如下知识:
1. 什么是Model,View,ViewModel?
2. 什么是XAML?以及XAML一些最基本的语法
3. 什么是事件(event)?
4. 什么是接口?什么是INotifyPropertyChanged接口?
5. 什么是绑定?绑定这几种方式(OneWay, TwoWay, OneWayToSource)的不一样点是什么?mvvm
接下来,咱们来讨论一下将要用到的工具。工具
首先是VisualStudio 2010,这个没什么可说的,你们都知道,你也不要吝啬了,升级到2010没有任何坏处。code
MvvmLight Toolkit——这是一个很轻的MVVM框架。麻雀虽小,五脏俱全,应该能知足咱们小程序的全部需求。网址:http://mvvmlight.codeplex.com/htm
NuGet——这个工具相似于Maven,主要是为你的项目解决第三方DLL的问题。咱们的项目常常要使用其余的DLL,好比Json.NET,而每次去人家的页面下载,而后再复制粘贴到你的项目中,最后再引用,是个很重复单调的过程,用NuGet能够比较优雅的帮你解决这些烦恼。网址:http://nuget.org/教程
MEF——Managed Extensibility Framework,这个尚在考虑之中。有些朋友可能对IoC(Inversion of Control)或者Dependency Injection不熟悉,因此我还在犹豫要不要在例子中使用这个。相关知识网址:http://en.wikipedia.org/wiki/Inversion_of_control;http://en.wikipedia.org/wiki/Dependency_injection
Caliburn Micro——另外一个MVVM框架。我比较偏心这个框架。它的思想很巧妙,并且用起来也很方便,上手也很容易。网址:http://caliburnmicro.codeplex.com/接口
Json.NET——咱们有可能会用到这个开源库。缘由在于咱们可能须要一个简单的数据存储层,因此我打算用Json.NET将DataSet转成BSON(http://bsonspec.org/),而后存入本地文件。读取时候能够用Json.NET将BSON转回DataSet。网址:http://json.codeplex.com/
此外,MVVM的框架很是之多,微软有个Prism,可是我不许备用它作例子,由于Prism操心的事情太多了,这个简单教程讲不了那么多。其实最主要的是,我对Prism不熟悉。
若是你对美化UI感兴趣,能够试试这两个东西:
Ookii.Dialogs —— http://www.ookii.org/software/dialogs/
MahApps.Metro —— http://www.theleagueofpaul.com/metro
本文来源于:http://www.lmwlove.com/ac/ID796