Ich erstelle eine MVVM WPF-Anwendung, in der ein Assistent mit mehreren untergeordneten Ansichten in einer übergeordneten Ansicht (V) geladen wird, die ViewModel (VM) als Datenkontext verwendet. Eines der MVVM-Musterprinzipien besagt, dass die VM keine Kenntnis über das V haben sollte, das an sie gebunden ist. In diesem Fall ist die VM dem V tatsächlich nicht bekannt, jedoch verwaltet die VM (1) eine Listeneigenschaft, die aus verschiedenen untergeordneten Ansichten besteht (dh verschiedene Schritte), und (2) hat eine andere Eigenschaft mit dem Namen CurrentView
, der dynamisch zugewiesen werden soll Element in der Liste. CurrentView
ist mit einem ContentControl
in V. gebundenMVVM ViewModel und untergeordnete Ansichten
sind Meine Fragen:
- in Ordnung ist (Kind) Ansichten innerhalb der VM zu verwalten? Mit anderen Worten, die VM weiß nichts von dem übergeordneten V, weiß aber, welche untergeordneten Ansichten geladen werden sollen.
- Anstatt andere untergeordnete VM für verschiedene untergeordnete Ansichten zu verwenden, binde ich einfach eine übergeordnete VM an das übergeordnete V, und wenn ein untergeordnetes V geladen wird, kann es denselben Datenkontext mit dem übergeordneten übergeordneten V verwenden richtiger Weg?
Soll ich die untergeordneten VMs verwalten ihre eigenen Daten, die möglicherweise von ihnen gemeinsam genutzt werden (d. H. Schritt 3 benötigt möglicherweise etwas aus Schritt 1), oder einfach alles in der übergeordneten VM behandeln? – tab87vn
@ tab87vn, Es gibt ein paar Möglichkeiten, mit denen Sie gehen: (1) das Parent-View-Modell verwalten/orchestrieren den freigegebenen Zustand durch Abhören von Änderungsbenachrichtigungen auf jedem der Kind-View-Modelle, dann informieren die anderen Kind-View-Modelle der new state oder (2) Sie könnten das Modell der Elternansicht aus dem Modell herauslassen und die Modelle der Kindsicht direkt mit einem Messenger kommunizieren lassen (was die meisten MVVM-Bibliotheken unterstützen). – devuxer