Die Dinge, die eigentlich in das Model gehören, sind auch im View-Model erlaubt, d.h. öffentliche Eigenschaften, IDataErrorInfo und INotifyPropertyChanged, aber was soll tatsächlich in das Model?
Antworten
Zu viele Anzeigen?Modell
Geschäftsdaten + Geschäftslogik + Geschäftsregeln
Ansicht
Applikations-UI
ViewModel
Wrapper über Modell, der von der Ansicht mithilfe von minimalem Aufwand/Code leicht lesbar/bindbar ist.
IDataErrorInfo
- Sollte im ViewModel verwendet werdenINotifyPropertyChanged
- Sollte im ViewModel verwendet werden. Kann auch im Modell verwendet werden, wenn nötig (aber nicht empfohlen)- Öffentliche Eigenschaften - Ja, ein Modell sollte sie haben.
Gehen Sie davon aus, dass Sie einen Stapelverarbeitungsprozess für einen Datenimport schreiben werden. Der Stapelverarbeitungsprozess wird nur auf das Modell zugreifen, daher gehört alles, was Sie zur Verarbeitung der Geschäftsregeln benötigen, getrennt von der Benutzeroberfläche, ins Modell. Das ViewModel kann einige Geschäftsregeln haben, aber nur in Bezug auf die Benutzeroberfläche.
In der von mir erstellten Anwendung befinden sich die Ansichten und ViewModels in einer Assembly und das Modell in einer anderen. Das Modell hat keine Verweise auf die Assembly der Ansicht und nur die Modell-Assembly hat Verweise auf den zugrunde liegenden Datenspeicher (eine Kombination aus Linq- und Webdienstanforderungen).