MvvmLight框架使用入門(一)

MvvmLight是比較流行的MVVM框架,相對較爲簡單易用。可能正因爲簡單,對應的幫助文檔不多,對初學者就不夠友好了。這裏會用幾篇隨筆,就個人對MvvmLight的使用經驗,來做一個入門的介紹。 

  第一步我們先找到並下載MvvmLight的最新版,我個人傾向使用NuGet。這裏順便吐槽一下,MvvmLight貌似並未在Github上創建項目,雖然作者對MS深深的愛讓我感動,不過也不要排斥非MS系的東西嘛(喂,你自己還不是一樣……) 

  VS2015 Community版,打開NuGet搜索MVVM,第一個就是。什麼什麼你還在用盜版!!還在搜Key!!Community版不要錢!不要錢!不要錢!重要的事情說三遍!!!而且功能甩以前的Express版十條街,完全可以正常開發使用(三哥CEO這一點還是做的不錯的,崽賣爺田不心疼?)。


隨便你下第一個MvvmLight,還是第二個MvvmLightLibs,後者是純內褲類庫。反正我們今天只介紹純內褲類庫。(前者會多幫你建一個MainPage的ViewModel,並創建好Binding啥的,俺們以後再說.

MvvmLight的本體一共有三個DLL:GalaSoft.MvvmLight.dll,GalaSoft.MvvmLight.Extras.dll和GalaSoft.MvvmLight.Platform.dll。另外依賴微軟的一個DLL:Microsoft.Practices.ServiceLocation.dll(這貨SimpleIoc要用到,不是俺們討論的重點) 

  以下是本篇的精華,可能解釋的還不夠細緻全面,但這不是第一篇麼,後面幾篇再做更爲詳細的介紹,舉個例子敲段代碼解釋啥的。  

  GalaSoft.MvvmLight.dll程序集,包含5個命名空間: 

  Namesapce GalaSoft.MvvmLight:最頂層的命名空間,包含了MvvmLight的主體,最核心的功能都在這裏 。

ICleanup 

接口。實現該接口的ViewModel需要在Cleanup方法裏釋放資源,特別是   -= event 

ObservableObject 

該類實現了INotifyPropertyChanged接口,定義了一個可通知的對象基類,供ViewModelBase繼承 

ViewModelBase 

繼承自ObservableObject,   ICleanup。將作爲MvvmLight框架下使用的ViewModel的基類。主要提供Set和RaisePropertyChanged供外部使用。同時會在Cleanup方法裏,Unregister該實例的所有的MvvmLight Messenger(在GalaSoft.MvvmLight.Messaging命名空間定義) 

 

  Namesapce GalaSoft.MvvmLight.Command 

RelayCommand 

提供了一個ICommand接口的實現 

RelayCommand<T> 

提供了ICommand接口的泛型實現 

  Namesapce GalaSoft.MvvmLight.Helpers。MvvmLight框架內部使用的一些輔助類,框架的使用者不直接接觸該命名空間。 

  Namesapce GalaSoft.MvvmLight.Messaging。消息類命名空間,提供全局的消息通知。可以簡單理解爲全局的event事件,後面會花一些篇幅講解使用。 

  Namesapce GalaSoft.MvvmLight.Views。和View結合較緊密,ViewModel通過依賴該命名空間下的類,來避免直接引用View,用以解耦代碼對具體的平臺的依賴。 

IDialogService 

對系統彈框消息的抽象。針對具體平臺會在GalaSoft.MvvmLight.Platform程序集裏分別實現 

INavigationService 

對頁面導航的抽象,不同平臺會有不同的實現 

  GalaSoft.MvvmLight.Extras程序集,僅包含1個命名空間: 

  Namesapce GalaSoft.MvvmLight.Ioc 。依賴注入使用的容器放在這個命名空間。

ISimpleIoc 

接口,IOC(Inverse Of Control)控制反轉,我比較喜歡說依賴注入(Dependency Injection),簡單可以理解爲一個託管的容器,替你創建和管理對象。在MVVM中,一般是ViewModel

PreferredConstructorAttribute 

該類繼承自Attribute,不常用。當ViewModel存在一個以上的構造函數時,可以通過他來指定SimpleIoc默認調用的構造函數 

SimpleIoc 

ISimpleIoc接口的實現。功能簡單實用 

  GalaSoft.MvvmLight.Platform程序集,依賴平臺具體實現的功能會放到這個程序集裏,包含2個命名空間: 

  Namesapce GalaSoft.MvvmLight.Threading 

DispatcherHelper 

非UI線程操作UI線程時用到的幫助類,已針對各平臺不同的寫法做了封裝。 

  Namesapce GalaSoft.MvvmLight.Views 

DialogService 

IDialogService接口的實現 

NavigationService 

INavigationService接口的實現 



原文地址:http://www.cnblogs.com/manupstairs/p/4890300.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章