MVVMLight介紹以及在項目中的使用

http://www.des8.me/detail-1822826.htmlhtml

1、MVVM 和 MVVMLight介紹
MVVM是Model-View-ViewModel的簡寫。相似於目前比較流行的MVC、MVP設計模式,主要目的是爲了分離視圖(View)和模型(Model)的耦合。
它是一種極度優秀的設計模式,但並不是框架級別的東西,由MVP(Model-View-Presenter)模式與WPF結合的應用方式時發展演變過來的一種新型架構。
立足於原有MVP框架而且把WPF的新特性糅合進去,以應對PC端開發日益複雜的需求變化。
 
結構如圖所示:
技術分享
 
相對於以前把邏輯結構寫在Code Behind 裏面的方式,MVVM幾乎徹底解耦了視圖和邏輯業務的關係,經過數據綁定和命令來處理UI屬性
及事件驅動。同理,ViewModel的視圖交互業務邏輯處理致使的屬性變動也會通知到View前端,讓View前端實時更新。Model中存放數據模型和數據邏輯、業務邏輯。
其實我我的認爲,數據和業務交互這一層仍是應該另外獨立,Model中徹底就是實體模型,這樣更清晰。
 
這種類型的雙向綁定很是優秀,View的變更,會自動反應到ViewModel上,反之亦然。目前JS前端框架AngularJS也是採用這種設計模式。
 
MVVM模式和MVC模式同樣,主要目的是分離視圖(View)和模型(Model),有幾大優勢
1. 低耦合:視圖(View)能夠獨立於Model變化和修改,一個ViewModel能夠綁定到不一樣的View上,當View變化的時候Model能夠不變,當Model變化的時候View也能夠不變。
2. 可重用性:能夠把一些視圖邏輯放在一個ViewModel裏面,讓不少View重用這段視圖邏輯。
3. 獨立開發:開發人員能夠專一於業務邏輯和數據的開發(ViewModel),設計人員能夠專一於頁面設計,使用Expression Blend能夠很容易設計界面並生成xml代碼。
4. 可測試:界面素來是比較難於測試的,而如今測試能夠針對ViewModel來寫。
 
但願對MVVM有更進一步瞭解的同窗能夠看看這篇文章: https://www.codeproject.com/kb/wpf/wpfmvvmquickstart.aspx
做者從MVVM的模式介紹到數據綁定、消息通知、命令等幾個主要方面都有詳細的說明。
 
若是你目前正在進行微軟的 WPF 、Windows Phone、Windows 八、SilverLight相關項目的開發,我先頗有必要了解一下MVVM Light框架。
它輕量(相對於Prism),專一(僅負責MVVM架構模式的實現,沒有其餘多餘的組件),高效(使用簡易,省時減力),可以幫助你更好的開發你的應用。
 
MVVMLight的做者Laurent Bugnion 是個微軟MVP,這個是MVVMLight的官網: http://www.mvvmlight.net/,上面有詳細的介紹和視頻文檔,
同時做者還將代碼開源到Codeplex上面: http://mvvmlight.codeplex.com/,有興趣的同窗能夠下載來了解下。
 
有趣的是,MVVMLight的產品Logo是一根羽毛,寓意了咱們上面提到的優勢:輕量、專業、高效,不知道做者是否是這個意思。
技術分享
 
 
 
2、如何在你的WPF應用中使用MVMLight
主要使用方式有兩種;
一種是去官網上下載MVVMLight Toolkit,安裝以後,VS模板中會出現MvvmLight項目模板,你能夠直接使用該項目模板來建立項目了。
裏面會包含默認的ViewModelLocator和MainViewModel,MainViewModel就是你Main視圖的ViewModel了,而ViewModelLocator是一個全局的ViewModel加載註冊器,這個第二篇會詳細說到。
 
另外一種方式就是去NuGet上安裝,這無疑是最便捷的事了。在NuGet 工具箱上搜索 MVVM Light,能夠看到兩個項目,一個是MVVM Light , 一個是 MVVM Light libraries only。
當前版本是5.3,說明MVVM Light的更新速度仍是挺快的,Prerelease中還有 V5.4 的 ALAPHA 版本。
 
Nuget上這兩個項目的區別就是MVVM Light除了必要的GalaSoft 組件以外,還會額外添加相關分層文件目錄造成簡單的MVVMLight成型框架。
技術分享
 
如圖它會幫你生成ViewModel文件夾,裏面包含MainViewModel和ViewModelLocator文件。
技術分享
至此,一個基於MVVMLight的WPF項目框架基本搭建完成了,下面一篇咱們詳細說下框架的結構。
相關文章
相關標籤/搜索