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