概念
本節(jié)將指導您了解WinForms MVVM的主要方面以及使用DevExpress MVVM框架實現(xiàn)它,所有主題在Mvvm Best Practices演示中都有相關的示例,相關的通知顯示在每個新部分之前(見下圖)。
此演示具有實時預覽功能,這意味著您可以修改示例代碼并立即看到結果,此外每個示例都可以作為單獨的解決方案在Visual Studio中打開。
有幫助的文章
MVVM框架處理您的應用程序代碼,并用自己的方式解釋特定的代碼片段,例如如果語法正確,屬性可以被認為是可綁定的,這些語法規(guī)則稱為約定。約定可以避免編寫額外的代碼,因為框架將“understand”您的期望,并自動生成所需的一切。本文檔收集了在構建MVVM應用程序時需要了解的所有MVVM框架約定。
本文檔演示了如何使用DevExpress MVVM框架提供的擴展方法構建流暢的API表達式。
本文檔專門介紹數(shù)據(jù)綁定和通知,用于通知應用程序綁定對象更改其值,包含以下組。
- Concepts——描述了傳統(tǒng)的“WinForms way”的數(shù)據(jù)綁定。
- Base Classes ——演示如何創(chuàng)建支持更改通知的可綁定屬性。
- POCO Properties——介紹了POCO (Plain Old CLR Objects)類,由DevExpress MVVM框架支持。
- POCO Dependencies ——演示了如何實現(xiàn)依賴屬性,當其他相關屬性被修改時,依賴屬性會更新它們的值。
- Meta-POCO Bindings——解釋如何將OnPropertyChanged回調的聲明移動到單獨的元數(shù)據(jù)類中。
- Collection Bindings——描述如何從所需的源填充集合。
- UI Triggers——解釋如何使用觸發(fā)器來綁定應該更新其可視化狀態(tài)的獨立UI元素。
- Legacy and Nested ViewModels——演示如何使用子視圖模型和遺留視圖模型。
- Value Converters——這一組說明了如何轉換可綁定的屬性值。
解釋如何將UI元素功能從事件處理程序移動到commands - objects特定操作的對象,在使用相關命令時執(zhí)行。本文檔包含以下章節(jié):
- Delegate Commands——解釋如何使用為同步執(zhí)行的操作而設計的簡單命令。
- POCO Commands——解釋如何從POCO類的方法轉換成命令,可以綁定到目標UI元素,并支持CanExecute行為。
- Asynchronous Commands——解釋如何實現(xiàn)可以取消的延遲或連續(xù)任務的命令。
- Legacy Commands——這一組展示了如何使用在自定義的 non-POCO 中定義的命令。
本文檔專門討論服務——用于為MVVM應用程序中的視圖提供特定的UI感知功能的接口,雖然服務是在視圖中定義的,但它們的功能仍然可以從視圖模型中調用,甚至可能不包括視圖的信息。該文檔包含兩個部分:
- DevExpress Services——演示了如何使用由DevExpress實現(xiàn)的服務,您可以在本文中找到DevExpress服務的列表。
- Custom Services——解釋如何創(chuàng)建,注冊和使用自己的自定義服務。
Behaviors用于向對象添加特定的功能,而無需從內部修改它,例如通常單擊選項卡或表單的關閉按鈕會顯示一個確認對話框,這不是關閉按鈕的主要功能,應該被視為額外的功能。在MVVM應用程序中,您可以使用Behaviors來實現(xiàn)這一點。
- Confirmation Behavior——演示了如何用行為替換一個可取消的事件(e.g., the FormClosing event)。
- Event-to-Command Behavior——解釋如何將為UI元素引發(fā)的任何事件與期望的行為關聯(lián)起來。
- Custom Behaviors——說明如何實現(xiàn)和使用自定義行為。
由于MVVM模式是基于分離應用層的,因此您肯定需要一種方法來讓分離的視圖和視圖模型相互通信。本文檔介紹如何使用DevExpress Messenger實現(xiàn)此通信。
完全根據(jù)MVVM概念構建的應用程序將具有多個獨立的視圖和視圖模型,有時來自不同的程序集。當需要導航到一個單獨的應用程序模塊時,MVVM框架需要知道它應該顯示哪個特定的視圖。從本主題中,您將了解如何在導航發(fā)生時傳遞所需視圖的多種方法。