若是你對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