2017-05-29 1 views
0

Ich bestätige das Muster für MVVM (Model, View, ViewModel) mit dem 'Modell' (Stück der Daten), Ansicht (Schnittstelle) und Viewmodel (Logik zwischen Daten und Schnittstelle).Xamarin Formulare und MVVM - Code hinter ist View-Modell?

Mit Xamarin Formen gibt es die Page.Xaml und Page.Xaml.cs.

Wenn meine ganze Schnittstelle in XAML ohne GUI in der Code-behind-Datei geschrieben codiert ..

Bedeutet dies, dass die Page.xaml.cs auf eine Xamarin Formen Seite das Ansichtsmodell ist?

Meine heutige Struktur ist wie folgt ..

  • Seite (GUI)
  • Seite-Code hinter (speichert eine Referenz auf das Objekt, mit denen wir arbeiten, falls vorhanden. Auch Logik hat Felder für die Aktualisierung basierend auf den Werten in dem Modell usw.)
  • Das Modell selbst (Felder und alle Methoden, um das Modell)

Antwort

1

Nr

Die relativ einfache Möglichkeit, dies zu bestimmen ist: kann der Code in einem Unit-Test getestet werden?

Der Code hinter einer Page.xaml.cs erfordert, dass die Seite instanziiert wird, um getestet zu werden. Die daraus resultierende Komplexität und Abhängigkeiten machen es unmöglich, es als einen Unit-Test zu bezeichnen.

Eines der Ziele von MVVM ist die Verbesserung der Testbarkeit des Codes. Code hinter ist schwer zu testen.

Geschäftslogik gehört in ViewModel und Model. Der Code dahinter "findet" sein ViewModel in seinem DataContext und sollte nur Werte über Bindings propagieren und Befehle auf den ViewModels ausführen. Es sollte keine Geschäftslogik geben, da sie nicht getestet werden kann.

Code-Behind sollte sich nur mit Anzeigelogik und Benutzerinteraktion befassen (Ziehen, Klicken, Sortieren usw.). In den meisten Fällen ist diese Logik bereits in vorhandenen Steuerelementen verfügbar und kann über XAML konfiguriert werden.

+0

Danke. Also, welche tatsächliche Code/Geschäftslogik, wenn überhaupt, in den Code dahinter gehört? Wie würde der Code hinter dem View-Modell selbst verlinken? – James

+0

keine. Geschäftslogik gehört in ViewModel und Model. Der Code dahinter "findet" sein ViewModel in seinem DataContext. Ich habe meine Antwort hinzugefügt. –

+0

perfekt, vielen Dank für die gute Erklärung. – James

0

MVVM ist Model View Ansichtsmodell zu manipulieren. MVVM ist ein Softwarearchitekturmuster, das dabei hilft, die Sicht, die Daten und die Geschäftslogik zu entkoppeln. Jedes Architekturmuster trägt zur besseren Wartbarkeit und Testbarkeit Ihres Codes bei. Jetzt ist Ihre Frage "Bedeutet dies, dass die Page.xaml.cs zu einer Xamarin Forms-Seite das ViewModel" nicht ist. Es ist kein ViewModel.
Um weitere Informationen zu erhalten, verwenden Sie diese (https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/data_bindings_to_mvvm/).

Verwandte Themen