共用方式為


WinUI 中的資料繫結、相依性插入和單元測試

本教學課程系列示範如何在 WinUI 3 應用程式中使用模型View-ViewModel (MVVM) 設計模式和 MVVM 工具組 來實作資料系結、相依性插入和單元測試。 它以 建立 WinUI 應用程式 教學課程為基礎,並示範如何更新檢視模型以利用 MVVM 工具組,以及 MVVM 工具組與傳統 MVVM 方法之間的差異。

您可以從 GitHub 存放庫下載或檢視本教學課程的程式代碼。

在本教學課程中,您將瞭解如何:

  • 瞭解 MVVM 工具組與傳統 MVVM 方法之間的差異。
  • 建立個別的類別程式庫專案來保存 ViewModel 和服務,以提高可測試性。
  • 使用 MVVM 工具組在 WinUI 應用程式中實作資料繫結。
  • 新增 AllNotesViewModelNoteViewModel 檢視模型以利用 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 工具組進行資料繫結和檢視模型管理。

所有筆記頁面

WinUI Notes 應用程式的螢幕擷取畫面,在 AllNotesPage 檢視中顯示三個已儲存的筆記。

筆記頁面

WinUI Notes 應用程式的螢幕擷取畫面,在 NotePage 檢視中顯示空白的附註頁面。

小提示

當您建置 Windows 應用程式時,您通常會參考 API 參考檔和概念檔。在本教學課程中,您會看到文字中的內嵌連結,以及標示為「在文件中深入瞭解:」的群組中的連結。 這些連結是選擇性的;您不需要遵循它們來完成本教學課程。 如果您想要記下當您開始建立自己的應用程式時所需的資訊的位置,則會提供它們。