本教學課程系列示範如何在 WinUI 3 應用程式中使用模型View-ViewModel (MVVM) 設計模式和 MVVM 工具組 來實作資料系結、相依性插入和單元測試。 它以 建立 WinUI 應用程式 教學課程為基礎,並示範如何更新檢視模型以利用 MVVM 工具組,以及 MVVM 工具組與傳統 MVVM 方法之間的差異。
您可以從 GitHub 存放庫下載或檢視本教學課程的程式代碼。
在本教學課程中,您將瞭解如何:
- 瞭解 MVVM 工具組與傳統 MVVM 方法之間的差異。
- 建立個別的類別程式庫專案來保存 ViewModel 和服務,以提高可測試性。
- 使用 MVVM 工具組在 WinUI 應用程式中實作資料繫結。
- 新增
AllNotesViewModel和NoteViewModel檢視模型以利用 MVVM 工具組。 - 整合相依性注入來管理 ViewModel 和服務。
- 建立單元測試專案來測試 ViewModel 和服務。
先決條件
若要完成本教學課程,您需要下列必要條件:
- Visual Studio 2022 (17.14 版或更新版本) 或已安裝 WinUI 應用程式開發 工作負載的 Visual Studio 2026。
- 依照 建立 WinUI 應用程式 教學課程中的步驟建立的入門專案。 如果您已經熟悉教學課程,可以從 GitHub 存放庫下載程式碼以開始使用。
什麼是 MVVM 工具組?
MVVM 工具組是新式、輕量型且快速的程式庫,可協助您在 .NET 應用程式中實作 MVVM 設計模式。 它是 .NET 社群工具組 的一部分,並提供一組工具和公用程式來簡化 MVVM 型應用程式的開發。 MVVM 工具組包含下列功能:
-
ObservableObject:實作
INotifyPropertyChanged介面的基類,因此您可以建立檢視模型來通知檢視屬性變更。 - RelayCommand:一種命令實作,可讓您將 UI 動作繫結至檢視模型中的方法。
- Messenger:一種訊息傳遞系統,可在應用程式的不同部分之間進行通訊,而無需緊密耦合。
- 屬性:一組可用來產生樣板程式碼的屬性,例如屬性變更通知和命令實作。
- 源生成器:編譯時代碼生成,減少樣板代碼並提高效能。
- 依賴注入支援:內建對依賴注入的支持,以管理視圖模型和服務的生命週期。
MVVM 工具組的設計易於使用並整合到您現有的專案中。 它與各種 .NET 平台相容,包括 WinUI、WPF 和 .NET MAUI。 您可以查看 GitHub 存放庫 上的一些範例應用程式,或 Microsoft Store 上的 範例應用程式 ,以瞭解如何在不同的案例中使用 MVVM 工具組。
MVVM 工具組與傳統 MVVM 方法相比如何?
相較於傳統方法,MVVM 工具組可減少樣板 ViewModel 程式碼的數量,並簡化實作 MVVM 設計模式的許多層面。 以下是一些主要區別:
| 特徵 / 功能 | 傳統 MVVM 方法 | MVVM 工具組方法 |
|---|---|---|
| 屬性變更通知 | 在基類中手動實作 INotifyPropertyChanged ,並為每個屬性引發 PropertyChanged 事件。 |
繼承ObservableObject並使用SetProperty方法來自動引發PropertyChanged事件。 |
| 命令實現 | 請為每個命令手動實作 ICommand。 |
使用 RelayCommand 來輕鬆建立最少模板的命令。 |
| Messaging | 實作自訂訊息系統或使用第三方函式庫。 | 使用內建 Messenger 類別進行元件之間的解耦通訊。 |
| 樣板代碼 | 撰寫屬性變更通知和命令實作的重複程式碼。 | 使用屬性和來源產生器來減少樣板程式碼。 |
| Performance | 反射和執行期間代碼生成可能會導致效能負擔。 | 原始碼產生器提供編譯時程式碼生成,提高效能。 |
| 依賴注入支援 | 需要手動設定和管理檢視模型生命週期。 | 內建相依性插入支援,以管理檢視模型生命週期。 |
| 學習曲線 | 可能需要更深入了解 MVVM 概念和模式。 | 更易於學習和使用,注重簡單性和生產力。 |
如需 MVVM 設計模式的詳細資訊,請參閱 Windows 資料繫結和 MVVM、模型-視圖-視圖模型(MVVM)以及 INotifyPropertyChanged 介面的參考文件。
WinUI Notes 應用程式
您在本教學課程中建置的最終應用程式是 建立 WinUI 應用程式 教學課程中 WinUI Notes 應用程式的重構版本。 該應用程序允許用戶創建、保存和加載多個筆記。 原始應用程式的使用者介面保持不變,但更新的架構會使用 MVVM 工具組進行資料繫結和檢視模型管理。
所有筆記頁面
筆記頁面
小提示
當您建置 Windows 應用程式時,您通常會參考 API 參考檔和概念檔。在本教學課程中,您會看到文字中的內嵌連結,以及標示為「在文件中深入瞭解:」的群組中的連結。 這些連結是選擇性的;您不需要遵循它們來完成本教學課程。 如果您想要記下當您開始建立自己的應用程式時所需的資訊的位置,則會提供它們。