Freigeben über


Datenbindung, Abhängigkeitsinjektion und Komponententests in WinUI

In dieser Lernprogrammreihe wird veranschaulicht, wie Datenbindung, Abhängigkeitseinfügung und Komponententests mit dem Modell-View-ViewModel (MVVM)-Entwurfsmuster und dem MVVM-Toolkit in einer WinUI 3-App implementiert werden. Es basiert auf dem Lernprogramm zum Erstellen einer WinUI-App und zeigt Ihnen, wie Sie Ihre Ansichtsmodelle aktualisieren, um das MVVM-Toolkit und die Unterschiede zwischen dem MVVM-Toolkit und herkömmlichen MVVM-Ansätzen zu nutzen.

Sie können den Code für dieses Lernprogramm aus dem GitHub-Repository herunterladen oder anzeigen.

In diesem Tutorial erfahren Sie, wie:

  • Verstehen Sie die Unterschiede zwischen dem MVVM-Toolkit und herkömmlichen MVVM-Ansätzen.
  • Erstellen Sie ein separates Klassenbibliotheksprojekt, um ViewModels und Dienste zu halten, um die Testbarkeit zu verbessern.
  • Implementieren Sie die Datenbindung in Ihrer WinUI-App mit dem MVVM-Toolkit.
  • Fügen Sie AllNotesViewModel und NoteViewModel Viewmodelle hinzu, um das MVVM-Toolkit zu nutzen.
  • Integrieren Sie die Abhängigkeitsinjektion zum Verwalten von ViewModels und Diensten.
  • Erstellen Sie ein Komponententestprojekt, um Ihre ViewModels und Dienste zu testen.

Voraussetzungen

Zum Durchführen dieses Tutorials benötigen Sie Folgendes:

  • Visual Studio 2022 (Version 17.14 oder höher) oder Visual Studio 2026 mit installierter WinUI-Anwendungsentwicklungsworkload .
  • Ein Startprojekt, das mit den Schritten im Lernprogramm " Erstellen einer WinUI-App " erstellt wurde. Wenn Sie bereits mit dem Lernprogramm vertraut sind, können Sie den Code herunterladen, um hier aus dem GitHub-Repository zu beginnen.

Was ist das MVVM-Toolkit?

Das MVVM-Toolkit ist eine moderne, einfache und schnelle Bibliothek, mit der Sie das MVVM-Entwurfsmuster in Ihren .NET-Anwendungen implementieren können. Es ist Teil des .NET Community Toolkits und bietet eine Reihe von Tools und Dienstprogrammen, um die Entwicklung von MVVM-basierten Anwendungen zu vereinfachen. Das MVVM-Toolkit enthält Features wie:

  • ObservableObject: Eine Basisklasse, die die INotifyPropertyChanged Schnittstelle implementiert, sodass Sie Ansichtsmodelle erstellen können, die die Ansicht von Eigenschaftenänderungen benachrichtigen.
  • RelayCommand: Eine Befehlsimplementierung, mit der Sie UI-Aktionen an Methoden im Ansichtsmodell binden können.
  • Messenger: Ein Messaging-System, das die Kommunikation zwischen verschiedenen Teilen Ihrer Anwendung ohne enge Kopplung ermöglicht.
  • Attribute: Eine Reihe von Attributen, die Sie zum Generieren von Codebausteinen verwenden können, z. B. Eigenschaftenänderungsbenachrichtigungen und Befehlsimplementierungen.
  • Quellgeneratoren: Codegenerierung zur Kompilierzeit, die Boilerplate-Code reduziert und die Leistung verbessert.
  • Unterstützung für Abhängigkeitsinjektion: Integrierte Unterstützung für Abhängigkeitsinjektion zum Verwalten des Lebenszyklus von View-Modellen und -Diensten.

Das MVVM Toolkit ist so konzipiert, dass es einfach zu verwenden und in Ihre vorhandenen Projekte integriert werden kann. Es ist kompatibel mit verschiedenen .NET-Plattformen, einschließlich WinUI, WPF und .NET MAUI. Sie können einige Beispiel-Apps im GitHub-Repository oder die Beispiel-App im Microsoft Store auschecken, um zu sehen, wie das MVVM-Toolkit in verschiedenen Szenarien verwendet werden kann.

Wie vergleicht das MVVM-Toolkit herkömmliche MVVM-Ansätze?

Das MVVM Toolkit reduziert die Menge an ViewModel-Codebausteinen und vereinfacht viele Aspekte der Implementierung des MVVM-Entwurfsmusters im Vergleich zu herkömmlichen Ansätzen. Hier sind einige wichtige Unterschiede:

Merkmal Herkömmlicher MVVM-Ansatz MVVM-Toolkit-Ansatz
Benachrichtigung der Eigenschaftenänderung Implementieren Sie INotifyPropertyChanged manuell in einer Basisklasse und lösen Sie PropertyChanged Ereignisse für jede Eigenschaft aus. Erben Sie von ObservableObject und verwenden Sie die SetProperty-Methode, um PropertyChanged-Ereignisse automatisch auszulösen.
Befehlsimplementierung Implementieren Sie ICommand manuell für jeden Befehl. Verwenden Sie RelayCommand, um Befehle mit minimalem Vorlagentext einfach zu erstellen.
Nachrichtenübermittlung Implementieren Sie benutzerdefinierte Messagingsysteme oder verwenden Sie Bibliotheken von Drittanbietern. Verwenden Sie die integrierte Messenger Klasse für die entkoppelte Kommunikation zwischen Komponenten.
Vorlagen-Code Schreiben Sie sich wiederholenden Code für Eigenschaftenänderungsbenachrichtigungen und Befehlsimplementierungen. Verwenden Sie Attribute und Quellgeneratoren, um Codebausteine zu reduzieren.
Leistung Es könnte zu einem Performance-Overhead aufgrund von Reflexion und Laufzeitcodegenerierung kommen. Quellgeneratoren bieten kompilierte Codegenerierung und verbessern die Leistung.
Unterstützung der Abhängigkeitsinjektion Erfordert manuelles Einrichten und Verwalten von Ansichtsmodell-Lebenszyklen. Integrierte Unterstützung für die Abhängigkeitsinjektion zur Verwaltung von Ansichtsmodelllebenszyklen.
Lernkurve Möglicherweise ist ein tieferes Verständnis von MVVM-Konzepten und -Mustern erforderlich. Einfacher zu lernen und zu verwenden, mit dem Fokus auf Einfachheit und Produktivität.

Weitere Hintergrundinformationen zum MVVM-Entwurfsmuster finden Sie unter Windows-Datenbindung und MVVM, Model-View-ViewModel (MVVM) und der Referenzdokumentation für die INotifyPropertyChanged-Schnittstelle.

die WinUI-Notes-App

Die endgültige Anwendung, die Sie in diesem Lernprogramm erstellen, ist eine umgestaltete Version der WinUI Notes-App aus dem Lernprogramm zum Erstellen einer WinUI-App . Mit der App können Benutzer mehrere Notizen erstellen, speichern und laden. Die Benutzeroberfläche der ursprünglichen App bleibt gleich, die aktualisierte Architektur verwendet jedoch das MVVM-Toolkit für die Datenbindung und die Ansichtsmodellverwaltung.

AllNotesPage

Screenshot der WinUI-Notizen-App mit drei gespeicherten Notizen in der AllNotesPage-Ansicht.

NotePage

Screenshot der WinUI-Notizen-App mit einer leeren Notizseite in der NotePage-Ansicht.

Tipp

Beim Erstellen von Windows-Apps verweisen Sie häufig auf API-Referenzdokumente und konzeptionelle Dokumente. In diesem Lernprogramm werden Links inline im Text und in Gruppen mit der Bezeichnung "Weitere Informationen in den Dokumenten:" angezeigt. Diese Links sind optional; Sie müssen sie nicht befolgen, um das Lernprogramm abzuschließen. Sie werden für den Fall bereitgestellt, dass Sie notieren möchten, wo Sie die Informationen finden, die Sie benötigen, wenn Sie mit der Erstellung Ihrer eigenen Apps beginnen.