mvvm框架有:1、MVVMLight框架,一個實現MVVM模式的輕量級框架;2、Prism框架;3、Caliburn框架,一個MVVM類的開源框架;4、MVVM Helpers框架;5、Cinch框架;6、MVVMFoundation框架
實現MVVM的框架
1、最強大且功能最多的組合框架——Prism
下載地址:http://compositewpf.codeplex.com/
開發者:微軟patterns & practices團隊
是否支持Silverlight:是
學習資料:Composite Application Guidance for WPF and Silverlight - May 2010.chm以及Quickstarts和StockTraderRI等。
源碼截圖如下:
Prism——之前又叫Composite Application Guidance for WPF and Silverlight,它是構建復雜的基于WPF/Silverlight企業級應用的主流框架。Prism中有幾個比較重要的概念:
1,BootStrapper:應用程序切入點,繼承Prism的UnityContainer或MEF提供的MefUnityContainer,為系統提供一個容器。
2,Shell:它是一個外殼,通過UI元素和Region布局頁面。 它是應用程序的頂級窗口,顯示的內容一般就由View來填充,Shell本身并不知道它包含了哪些內容,所以功能則是由各個Module來具體提供。
3,View:它等同于MVP模式、MVVM模式中的View??梢酝ㄟ^IRegionManager注入到Region中。
4,Module:可以把一個大項目拆分開來,每一個Module都包含View、數據、模型,主要用于實現復雜業務操作。
5,IModuleManager:主要用于管理模塊加載,可以實現動態加載。
6,IEventAggregator:事件處理接口,實現訂閱和發布模式,這也是MVVM框架的一般做法。
Prism是一個比較龐大的組合框架,4.0引入MEF及功能調整以后變得更加強大了,現在可以說是組合框架和應用框架的統一體,而且是微軟團隊的力量,所以選它是值得保證的。
2、最強大且功能最多的應用框架——Caliburn
下載地址:http://caliburn.codeplex.com/
開發者:Rob Eisenberg
是否支持Silverlight:是
學習資料:我主要參考項目實例、源碼、單元測試用例、國外一些博客和社區。
源碼截圖如下:
Caliburn中有幾個比較重要的概念:
1,在Actions基礎上的Commands帶有很多功能,其中包括多參數、過濾操作以及異步調用。
2,窗體和控件的生命周期事件也處理得比較好(包括activation、deactivation、shutdown等)。
3,不管是整個框架還是基于這個框架的應用程序的可測性都比較好。
4,提供了很多常用功能,這些在項目當中都比較有用。
5,除了支持MVVM模式之外,還很好的支持MVP模式以及其他的一些變種模式。
6,強大的依賴注入框架以及AOP框架,這里可以靈活選用其中一種。
Caliburn是一個非常強大的MVVM應用框架,對很多功能都提供了靈活且多種實現,不論是項目使用還是研究代碼,感覺都受益頗多。
3、輕量級且適用的MVVMLight
MVVMLight是一個實現MVVM模式的輕量級框架(相對于Prism),能夠更好的幫助我們開發WPF 、Windows Phone、Windows 8、SilverLight相關項目。
MVVMLight的作者Laurent Bugnion 是個微軟MVP,作者將代碼開源到Codeplex上面:http://mvvmlight.codeplex.com/。
MVVMLight的官網:http://www.mvvmlight.net/,上面有詳細的介紹和視頻文檔,有興趣可以了解下。
下載地址:http://mvvmlight.codeplex.com/
開發者:Laurent Bugnion
是否支持Silverlight:是
學習資料:除了online documentation,我主要參考項目實例、源碼、單元測試用例、國外一些博客和社區。另外這三篇文章非常不錯,用MVVMLight開發了一個比較完整的Silverlight企業項目
Part 1 - Introduction, Installation, and General Application Design Topics
Part 2 - MVVM Light Topics
Part 3 - Custom Authentication, Reset Password and User Maintenance
源碼截圖如下:
MVVMLight中有幾個比較重要的概念:
1,RelayCommand:通過對Command進行封裝,使得MVVM模式在WPF和Silverlight上更加容易。你只需要在 ViewModel中定義好各個RelayCommand,然后在View中通過Command來綁定ViewModel中定義好的 RelayCommand,就可以實現像WinForm、ASP.NET事件一樣的效果,只不過這里是解除了UI和邏輯的強耦合。
2,Messager:MVVMLight中的Messager作用比較大,前面講了MVVM模式解除了ViewModel和View的強引用,那么它們如何來進行交互呢?就是靠它來讓ViewModel和View來進行通信的。一般我們會定義一個靜態AppMessages類來作為通用的一個通信類,原理就是發布訂閱模式。
3,EventToCommand:這里就比較類似于附加行為的概念,是在MVVM Light Toolkit V3中開始引入的概念。
4,ICleanup接口:當顯示某個View時,需要先調用Cleanup方法清除數據,這也是由于ViewModel和View的耦合隔離產生的一些必要操作。
MVVMLight是一個非常好用的MVVM框架,提供了VS和Blend的模板及智能感知。它結合MEF使用真的感覺很輕量級且高效,而且提供了WPF和Silverlight的支持,尤其在Silverlight的支持上比較好,所以一般選擇輕量級的Silverlight MVVM模式,它比較被看好。
4、功能齊備且易用的MVVM Helpers
下載地址:http://mvvmhelpers.codeplex.com/
開發者:Mark Smith
是否支持Silverlight:否
學習資料:http://www.julmar.com/blog/mark/以及提供的實例、源碼及測試用例。
源碼截圖如下:
MVVM Helpers又叫JulMar MVVM Helpers + Behaviors,其中有幾個比較重要的概念:
1、提供了MVVM模式的基本功能,包括ViewModel、View及Model之間的隔離,另外還提供了一些常用功能。
2、ViewModel的創建使用標簽的形式注入,現在也可以引入MEF。
3、IOC/DI的支持,屬性都有驗證機制,Wait Cursor的支持,當使用完viewmodel之后能及時釋放,這樣避免內存泄露。
4、提供了常用的Attached Behaviors支持。
5、消息機制的引入,避免強引用產生的耦合。
MVVM Helpers是一個非常適用的MVVM框架,尤其是提供了MVVM常用功能+MEF+Attached Behaviors,所以項目中的問題基本都能解決。
5,功能強大且輕巧的Cinch
下載地址:http://cinch.codeplex.com/
開發者:Sacha Barber
是否支持Silverlight:否
學習資料:http://sachabarber.net/以及提供的實例、源碼及測試用例。
源碼截圖如下:
如果仔細研究其代碼,你會發現它和上面講的MVVM Helpers有很多相似的代碼,估計是相互參考了一番:-D。Cinch 中有幾個比較重要的概念:
1,這個框架在沒有MEF出現之前就已經實現了ViewModel和View之間的強引用隔離,它既沒有一般IOC的配置,也沒有IView來做中轉,并且窗體和控件的生命周期事件也處理得比較好,所以在這方面來說是非常不錯的。
2,提供了常用的Attached Behaviors支持,另外也提供了一些MVVM常用功能。
3,DI/IOC使用Unity實現,多線程的實現,避免系統出現不可預料的錯誤。
4,當使用完viewmodel之后能及時釋放,這樣避免內存泄露,驗證機制的加入,常用導航實現。
5,消息機制的引入,避免強引用產生的耦合。
Cinch 是一個非常強大的框架,尤其是它比較著眼整個應用程序的搭建,所以也比較受到青睞。
6、功能簡單且易擴展的MVVMFoundation
下載地址:http://mvvmfoundation.codeplex.com/
開發者:Josh Smith
是否支持Silverlight:否
學習資料:http://joshsmithonwpf.wordpress.com/以及提供的實例、源碼及測試用例。
源碼截圖如下:
MVVMFoundation中有幾個比較重要的概念:
1,Messenger:這里主要用在各種不同的ViewModel之間通信(比如相互關聯的ViewModel、主從ViewModel等),當然也可以擴展成ViewModel與View之間進行通信。
2,ObservableObject:這里相當于ViewModelBase的概念,每一個ViewModel繼承自該類,調用完成之后立即釋放,防止內存泄露。
3,PropertyObserver:主要是對INotifyPropertyChanged.PropertyChanged進行封裝,這樣封裝可以精簡代碼,同時可以防止不當操作引起的內存泄露。
4,RelayCommand接口:封裝command的聲明,包括execution執行邏輯,可選的can-execute邏輯等。外部只需要實例化并Binding就可以簡單使用。
MVVMFoundation是一個非常簡單的MVVM框架,如果你覺得研究源碼比較困難,就可以先從這個框架入手,代碼簡單而且精煉。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
頭寸調撥是什么意思?頭寸簡單說就是錢,分為收入方和付出方,因為存在有差額,才需要進行頭寸調撥,通俗來講就是借錢。銀行頭寸調撥:指商業銀行在預測超額準備金需要量的基礎上,應及時地進行頭寸調撥,以保證超額準備金規模的適度性。簡單點說就是假如投資者需要支取1000萬,但是銀行沒有,所以需要客戶提前預約。轉而銀行就會向分行或總行調度這一千萬(進行同業拆借或同業拆放),這就叫頭寸調撥。頭寸調撥常使用的方法就...
為什么九月份的工資千萬別亂花?隨著9月份的快要結束,我們即將迎來大家所期待的國慶長假,然而,對于很多人來說,這個假期也意味著著額外的開銷。因此,我想提醒大家,不要揮霍自己的9月份工資,因為下個月的花費可能更加喜人。自國慶長假的第一天開始,人們的錢包就開始不停地削減,結婚禮金、旅游探親、消費開銷等等,每-個需要花費錢的活動都會讓我們的錢包縮水。盡管人們會一邊享受開銷的快感,又一邊擔心假期過后的貧困生...
銀行個人怎么貸款五萬?銀行個人貸款五萬可以通過信用貸款來貸,因為五萬以內的貸款都屬于小額貸款,貸款人只需要準備好申請貸款的相關證件基本上就可以申請成功。當然申請之前還需要保證本人擁有穩定的工作和固定的收入,這樣銀行才會判斷個人擁有獨立償還貸款的能力,給予貸款人相應的款項。銀行貸款5萬要什么條件?1、年滿20-55周歲,具有完全民事行為能力的自然人;具有當地常住戶口或長期居住證明,有固定的住所。2、...