Databindning, beroendeinmatning och enhetstestning i WinUI

Den här självstudieserien visar hur du implementerar databindning, beroendeinmatning och enhetstestning med MVVM-designmönstret (Model-View-ViewModel) och MVVM Toolkit i en WinUI 3-app. Den bygger på självstudien Skapa en WinUI-app och visar hur du uppdaterar dina vymodeller för att utnyttja MVVM Toolkit och skillnaderna mellan MVVM Toolkit och traditionella MVVM-metoder.

Du kan ladda ned eller visa koden för den här självstudien från GitHub-lagringsplatsen.

I den här tutorialen lär du dig följande:

  • Förstå skillnaderna mellan MVVM Toolkit och traditionella MVVM-metoder.
  • Skapa ett separat klassbiblioteksprojekt för att lagra ViewModels och tjänster för bättre testbarhet.
  • Implementera databindning i WinUI-appen med hjälp av MVVM Toolkit.
  • Lägg till vy-modellerna AllNotesViewModel och NoteViewModel för att utnyttja MVVM Toolkit.
  • Integrera beroendeinmatning för att hantera ViewModels och tjänster.
  • Skapa ett enhetstestprojekt för att testa dina ViewModels och tjänster.

Förutsättningar

För att slutföra den här självstudien, finns följande förhandskrav:

  • Visual Studio 2022 (version 17.14 eller senare) eller Visual Studio 2026 med arbetsbelastningen WinUI-programutveckling installerad.
  • Ett startprojekt som skapats genom att följa stegen i självstudien Skapa en WinUI-app . Om du redan är bekant med handledningen kan du ladda ner koden här för att komma igång från GitHub-lagringsplatsen.

Vad är MVVM Toolkit?

MVVM Toolkit är ett modernt, enkelt och snabbt bibliotek som hjälper dig att implementera MVVM-designmönstret i dina .NET-program. Det är en del av .NET Community Toolkit och innehåller en uppsättning verktyg och verktyg för att förenkla utvecklingen av MVVM-baserade program. MVVM Toolkit innehåller funktioner som:

  • ObservableObject: En basklass som implementerar INotifyPropertyChanged gränssnittet, så att du kan skapa vymodeller som meddelar vyn om egenskapsändringar.
  • RelayCommand: En kommandoimplementering som gör att du kan binda användargränssnittsåtgärder till metoder i din vymodell.
  • Messenger: Ett meddelandesystem som möjliggör kommunikation mellan olika delar av programmet utan nära koppling.
  • Attribut: En uppsättning attribut som du kan använda för att generera exempelkod, till exempel meddelanden om egenskapsändring och kommandoimplementeringar.
  • Källgeneratorer: Kodgenerering vid kompilering som minskar standardkod och förbättrar prestanda.
  • Stöd för beroendeinmatning: Inbyggt stöd för beroendeinmatning för att hantera livscykeln för visningsmodeller och tjänster.

MVVM Toolkit är utformat för att vara enkelt att använda och integrera i dina befintliga projekt. Den är kompatibel med olika .NET-plattformar, inklusive WinUI, WPF och .NET MAUI. Du kan kolla in några exempelappar på GitHub-lagringsplatsen eller exempelappen i Microsoft Store för att se hur MVVM Toolkit kan användas i olika scenarier.

Hur skiljer sig MVVM Toolkit från traditionella MVVM-metoder?

MVVM Toolkit minskar mängden standardkod för ViewModels och förenklar många aspekter av att implementera MVVM-designmönster jämfört med traditionella metoder. Här är några viktiga skillnader:

Feature Traditionell MVVM-metod MVVM Toolkit-metod
Meddelande om fastighetsändring Implementera INotifyPropertyChanged manuellt i en basklass och skapa PropertyChanged händelser för varje egenskap. Ärva från ObservableObject och använd SetProperty metoden för att automatiskt generera PropertyChanged händelser.
Kommandoimplementering Implementera ICommand manuellt för varje kommando. Använd RelayCommand för att enkelt skapa kommandon med minimal standardkod.
Messaging Implementera anpassade meddelandesystem eller använd bibliotek från tredje part. Använd den inbyggda Messenger klassen för frikopplad kommunikation mellan komponenter.
Pannplåtskod Skriv repetitiv kod för meddelanden om egenskapsändringar och kommandoimplementeringar. Använd attribut och källgeneratorer för att minska exempelkoden.
Performance Kan ha prestandaöverliggande kostnader på grund av reflexion och runtime-kodgenerering. Källgeneratorer ger kompileringstidskodgenerering, vilket förbättrar prestandan.
Stöd för beroendeinjektion Kräver manuell installation och hantering av visningsmodelllivscykler. Inbyggt stöd för beroendeinmatning för att hantera visningsmodelllivscykler.
Inlärningskurva Kan kräva en djupare förståelse av MVVM-begrepp och MVVM-mönster. Enklare att lära sig och använda med fokus på enkelhet och produktivitet.

Mer bakgrund om MVVM-designmönstret finns i Windows-databindning och MVVM, Model-View-ViewModel (MVVM) och referensdokumentationen för INotifyPropertyChanged Interface.

WinUI Notes-appen

Det sista programmet som du skapar i den här självstudien är en omstrukturerad version av WinUI Notes-appen från självstudien Skapa en WinUI-app . Med appen kan användarna skapa, spara och läsa in flera anteckningar. Användargränssnittet för den ursprungliga appen förblir detsamma, men den uppdaterade arkitekturen använder MVVM Toolkit för databindning och visningsmodellhantering.

AllNotesPage

Skärmbild av WinUI Notes-appen som visar tre sparade anteckningar i vyn AllNotesPage.

NotePage

Skärmbild av WinUI Notes-appen som visar en tom anteckningssida i NotePage-vyn.

Tips/Råd

När du skapar Windows-appar refererar du ofta till API-referensdokument och konceptuella dokument. I den här självstudien visas länkar infogade i texten och i grupper märkta "Läs mer i dokumenten:". Dessa länkar är valfria. du behöver inte följa dem för att slutföra självstudien. De tillhandahålls om du vill anteckna var du hittar den information du behöver när du börjar skapa dina egna appar.