Laden...

Frage zum MVVM Guide

Erstellt von ByteDevil vor 4 Jahren Letzter Beitrag vor 4 Jahren 774 Views
ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 4 Jahren
Frage zum MVVM Guide

Hi,

ich führe mir gerade den MVVM Guide zu Gemüte, weil ich gerade etwas fest hänge. Und zwar habe ich verschachtelte Models/Viewmodels.

Ich habe es so verstanden, dass jedes View ein ViewModel braucht. Und jedes ViewModel braucht ein Model.

Hier hält aber das ViewModel die Daten die doch ins Model gehören, oder? Wieso ist hier Model und ViewModel ein und das Selbe?

5.658 Beiträge seit 2006
vor 4 Jahren

Die Aufgaben des ViewModels sind dort relativ ausführlich beschrieben. Da steht nicht, daß ein Model benötigt wird, oder wie viele ViewModels eine View hat. Das hängt ganz von den Anforderungen und der Umsetzung ab.

Das ViewModel hat dabei folgende Aufgaben:
Alle erforderlichen Daten für die Anzeige bereitstellen: Das ViewModel muss der Benutzeroberfläche alle Daten zur Verfügung stellen, die sie zur Anzeige benötigt. Dazu gehören neben den Daten, die dem Benutzer angezeigt werden sollen, auch die Aktionen, die der Benutzer ausführen kann (siehe Abschnitt Commands), sowie zusätzliche Daten für Auswahllisten. Will man beispielsweise eine ComboBox für eine Länderauswahl darstellen, muss dafür über das ViewModel eine Liste mit allen auswählbaren Ländern bereitgestellt werden.

Die Benutzeroberfläche über geänderte Werte informieren: Das ViewModel löst die jeweiligen Events aus den INotifyPropertyChanged- und INotifyCollectionChanged-Schnittstellen aus, damit die Anzeige automatisch aktualisiert werden kann.

Kapselung der Logik für die Benutzeroberfläche: Das ViewModel enthält sämtlichen Code, der für die korrekte Darstellung der Benutzeroberfläche notwendig ist, beispielsweise die Aktivierung und Deaktivierung von Steuerelementen oder ganzen Bereichen der Oberfläche sowie Benutzeraktionen (Commands). Damit befindet sich die gesamte Logik der Anwendungsoberfläche im ViewModel, und kann dort unabhängig von anderen Teilen der Anwendung mit Hilfe von
>
getestet werde.

Weeks of programming can save you hours of planning