Frage

Ich kann nicht ganz herausfinden, wie das View-Modell im Modell der Änderungen benachrichtigt werden, erhalten, ohne eine Reihe von UI-spezifischen Sachen wie INotifyProperyChanged und INotifyCollectionChanged in meinem Modell hinzufügen oder Unmengen an verschiedenen Veranstaltungen erstellen und eine Reihe von tun Dinge, die wie sie UI sind fühlen spezifisch und sollte aus dem Modell bleiben.

Ansonsten würde ich nur das Geschäft all Logik in dem Ansicht-Modell kopieren muß, um sicherzustellen, dass alles auf dem neuesten Stand zu machen ist, und was ist dann der Punkt, das Modell mit dann?

Einer der tricky, die ich in meinem Modell habe, ist eine Eigenschaft einer „Kategorie“ Klasse. Sie können als Baumstruktur daran denken und das Eigentum sind alle Endknoten-Nachkommen. Nun, in dem Modell, das Eigentum on the fly erzeugt wird rekursiv durch alle es Kinder, die alles schön und gut ist. Das View-Modell muss jedoch auf diese Eigenschaft binden und muss wissen, wenn sie sich ändert. Soll ich ändern, nur das Modell der Ansicht-Modell aufzunehmen? Wenn ich die Ansicht-Modell nicht wirklich etwas tun dann nicht an diesem Punkt wirft das Modell alle notwendigen Benachrichtigungen über Änderungen und die Ansicht kann nur binden direkt an das Modell. Auch wenn das Modell war etwas, was ich nicht die Quelle haben, wie würde ich dieses Problem umgehen?

War es hilfreich?

Lösung

Ich bin nicht einverstanden, dass INotifyPropertyChanged und INotifyCollectionChanged sind UI-spezifisch. Sie sind in Namensräumen und Baugruppen, die nicht auf einen bestimmten UI-Stack gebunden ist. Aus diesem Grunde habe ich normalerweise diese Art von Verhalten als gering im System, wie ich kann (in der Regel der Datenschicht).

Wenn es aus irgendeinem Grund Sie nicht wollen, es auf diesem Niveau bringen, das ist in Ordnung. Sie können es auf einem höheren Niveau wie der Dienst oder UI-Ebene setzen in. Allerdings müssen Sie sicherstellen, dass auch durch diese Schicht werden alle Änderungen an den Datenstrukturen auftreten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top