2009-06-28 9 views
1

In MVVM-Muster möchte ich nicht über die Ansicht beim Erstellen des Modells denken. Also verwende ich öffentliche Eigenschaften mit in ILists gespeicherten Daten und so weiter. Aber dann ist mein Viewmodel nicht über Änderungen informiert, die an diesen Listen auf der Modellseite vorgenommen wurden. Soll ich stattdessen ObservableCollections in meinem Modell verwenden? Aber das scheint mir seltsam.MVVM Modell Design

Antwort

4

Ja, Sie sollten ObservableCollections verwenden. Ich weiß nicht, was daran seltsam wäre? Eine ObservableCollection benachrichtigt alle Listener über Änderungen. Das muss nicht unbedingt ein UI sein.

Ihr Ansichtsmodell soll nichts über den tatsächlichen Blick wissen Sie es, aber da es ein Ansicht Modell ist, ist es in Ordnung, denn es etwas zu übernehmen es verwenden wird, so ObservableCollection ist der Weg zu gehen und auch, soweit ich weiß, gängige Praxis.

Außerdem wissen die Listener genau, welche Elemente hinzugefügt oder entfernt wurden. Daher ist es nicht erforderlich, die gesamte Liste zu aktualisieren, wenn Änderungen auftreten => bessere Leistung für Aktualisierungen. Das ist auch, was Microsoft sagt (kann den Artikel darüber jetzt nicht finden)

+0

Das wollte ich wissen. Danke – apparat

+0

Dies könnte sehr teuer in einer Anwendung beliebiger Größe/Komplexität werden. –

3

Dies ist auch der Grund, warum Sie sehen, dass die meisten Menschen implementieren INotifyPropertyChanged auf ihrem Datenmodell, weil Sie möchten, dass das Viewmodel jedes Mal die Daten benachrichtigt werden Modelländerungen.

Verwandte Themen