Table of Contents

Anleitung: Aus Klassen ein ViewModel oder Model erstellen

In dieser Anleitung wollen wir uns einmal anschauen, wie man in Visual Studio ein neues Klassen-Element erstellen kann und anschließend entweder ein ViewModel oder ein Model für die Verwendung in einer Uno Platform Anwendung mit MVUX erstellen kann.

Für die folgenden Schritte, nehmen wir einmal an, die Seite, zu der das zu erstellende Element gehören soll, heißt SamplePage.xaml

  1. Neues Element (für die Verwendung als Model oder ViewModel) hinzufügen:

    1. Klicke hierzu mit der rechten Maustaste auf den Ordner Presentation rechts im Projektmappen-Browser
    2. Wähle Hinzufügen aus
    3. Und klicke dann auf Neues Element

    Hinzufügen-neues-Element-zu-Projektmappe

  2. Klassen Element erstellen:

    1. Wähle in der Liste das Element Class aus und benenne diese nach folgendem Schema:

    Deine Anwendung nutzt:

    • Mvvm: SampleViewModel.cs
    • Mvux: SampleModel.cs
  3. Klicke nun noch auf Hinzufüge.

    Hinzufügen-neues-Element-Klasse

Um ein für Mvux passendes Model zu erstellen:

  1. Füge vor das aktuelle class ein partial ein.
  2. Ersetze class durch record
  3. Mit dem Snippet Kürzel ctor kannst du dir auch direkt automatisch einen (Sekundären-) Konstruktor einfügen lassen.

Umbenennen-Klasse-zu-Mvux-Model

Note

In Mvux werden Models als record-Typen definiert, um Unveränderlichkeit und wertbasierte Gleichheit zu nutzen, was für die Zustandsverwaltung in Anwendungen vorteilhaft ist. Die Verwendung von partial ist in Mvux Models unerlässlich, um die vom Framework bereitgestellten Code-Generierungsfunktionen zu ermöglichen, wie z.B. automatische Eigenschaftsänderungsbenachrichtigungen und andere Reduzierungen von Boilerplate-Code.

Caution

Genau wie bei regulären C#-Klassen können auch Mvux Models oder Services primäre Konstruktoren haben, die standardmäßig die Parameter als Eigenschaften des Record-Typs erzeugen. Ein potenzieller Nachteil dabei ist, dass ein INavigator-Parameter im primären Konstruktor ebenfalls eine Eigenschaft des Models wäre, was normalerweise nicht das ist, was wir als Teil der öffentlichen API unseres Models wollen. Du solltest bevorzugen, diese Service-definierenden Parameter in einem sekundären Konstruktor zu definieren und sie als private readonly Felder zu behalten.

Note

Du kannst in Uno ViewModels oder Models frei den primären Konstruktor verwenden, beachte jedoch, dass bei Verwendung von Uno.Extensions.Navigation keine Parameter im Page-Konstruktor erlaubt sind.