文章目錄
Windows Phone Mango編程實踐
Windows Phone Mango Programming Practice
作品目標:Windows Phone開發實用手冊
MVVM設計模式概述
Model-View-ViewModel (MVVM)設計模式清晰地分離使用者介面(UI)的商務邏輯和展示層。MVVM使得使用者介面設計人員專註於介面設計,開發人員專註於代碼的商務邏輯,並使得開發人員和使用者介面設計人員在軟體製作過程能夠更容易地合作。
在MVVM設計模式,應用程式的使用者介面和底層表示,以及商務邏輯被分成三個不同的類別:視圖(View)、視圖模型(ViewMode)和模型(Model)。MVVM設計模式猶如孫子兵法中的地形:"地形有通者,有掛者,有支者,有隘者,有險者,有遠者。"夫地形者,兵之助也;MVVM則有助於應用程式的測試,維護和升級。熟練掌握MVVM的類及其相互作用,乃"將之至任,不可不察也"。故曰:"知此而用戰者必勝,不知此而用戰者必敗"。
- 視圖View—封裝了使用者介面和UI邏輯視圖模型;
- 視圖模型ViewModel—封裝表示邏輯和狀態;
- 模型Model—封裝了應用程式的商務邏輯和資料;
展示了MVVM類及其相互作用。
圖14-1 MVVM類及其相互作用
第三方MVVM架構
在www.CodePlex.com上有許多不錯的第三方MVVM架構可供我們借鑒,其中比較推崇的有MVVM Light Toolkit、Ultra Light MVVM for Windows Phone和Simple MVVM Toolkit都適合Windows Phone的開發。
MVVM Light Toolkit
MVVM Light Toolkit是協助人們在Silverlight和WPF中使用MVVM設計模式的一套組件。它是一個輕量級的、務實的架構,只包含所需的必要組成部分。
: http://mvvmlight.codeplex.com/ 。
在XAML中綁定DataContext
ViewModel檔案夾添加了兩個附加的類:ViewModelLocator.cs和MainViewModel.cs。ViewModelLocator聲明在 App.xaml中可用作源的 DataContext 綁定;MainViewModel 也已添加到項目中 ViewModelLocator 作為公開屬性。
注意
如果在項目中不需要使用MainViewModel,可以刪除此類。
為了使用MainViewModel作為MainPage.xaml的DataContext,需要在MainPage.xaml的開始標記中添加以下代碼:
DataContext="{Binding Main, Source={StaticResource Locator}}"
在Blend中綁定DataContext
DataContext 也可以直觀地在Expression Blend中使用以下步驟中綁定。
- 在Expression Blend中開啟Windows Phone工程;
- 編譯應用程式;
- 開啟MainPage.xaml;
- 在Objects和Timeline panel選擇UserControl;
- 在屬性面板中,選擇DataContext 屬性(在Common Properties部分),在Advanced屬性的下拉式功能表中選擇資料繫結。 Blend的資料繫結。
圖14-2 Blend的資料繫結
More information about the MVVM Light Toolkit can be found on http://www.galasoft.ch/mvvm/getstarted更多關於MVVM Light Toolkit的協助請登入http://www.galasoft.ch/mvvm/getstarted
.。
Ultra Light MVVM for Windows Phone 7
Ultra Light MVVM是輕量級的MVVM Silverlight應用程式,支援Windows Phone的邏輯刪除(tombstoning)。Ultra Light MVVM支援Windows Phone的特性:
- 命令
- 命令按鈕(使用參數)綁定
- 支援將命令綁定到應用程式欄上的按鈕
- 對話方塊,通知和確認
- 位置服務
- 友好的設計時視圖模式
- 具有墓碑事件控制鉤的墓碑友好視圖模型
- 從視圖模型解耦的導航支援
- 從視圖模型解耦的視覺狀態支援
- 在視圖模型攔截後退鍵
- 使用介面執行緒訪問的分配器協助
: http://ultralightmvvm.codeplex.com/ 。
Simple MVVM Toolkit
Simple MVVM Toolkit使開發應用MVVM設計模式Widnows Phone的應用程式變得更容易,為基於 MVVM設計模式的應用程式提供一個簡單的架構和工具集。Simple MVVM Toolkit的特點是簡單,但它包含執行 MVVM 設計模式的應用程式所需的一切。
: http://simplemvvmtoolkit.codeplex.com/ 。
來自Tony Sneed部落格的Simple MVVM Toolkit和MVVM Light Toolkit的比較結果。
圖14-3 Simple MVVM Toolkit和MVVM Light Toolkit的比較
Simple MVVM Toolkit安裝後的MVVM應用程式 Simple MVVM Toolkit。
圖14-4 Simple MVVM Toolkit