Die WPF/MVVM Alpha Geeks sagen:MVVM: Entwerfen Sie ein Ansichtsmodell Architektur mit aggregierten/je Viewmodels
1 View hat 1 Ansichtsmodell. Manchmal haben mehrere Ansichten 1 ViewModel (mit einem Wizard).
Wenn Sie mein Bild betrachten, sehen Sie 6 farbige Ansichten/UserControls. Die gelben, grünen und ORANGE UserControls werden in meiner Anwendung mehrfach verwendet
Die pinkfarbenen, blauen und roten UserControls werden nur einmal verwendet.
Fragen:
1. Soll ich sie machen auch Benutzersteuerelemente? Wenn ja, warum, wenn ich sie nicht wiederverwende.
2. Angenommen, das sind 6 UserControls, sollten sie dasselbe ViewModel verwenden? ODER sollte jedes View sein eigenes ViewModel haben?
A.) Classcode erstellen in GREEN senden Klassencode zu YELLOW
B.) Select Klassencode in YELLOW ändern aktuellen Schüler in BLUE
C) in BLUE aktuellen Schüler wählen ändern Schüler Details in RED ändern Schüler Dokumente in ORANGE
D.) in PINK erstellen Schüler Senden Schüler BLUE
E.) ... viele weitere
Ist das der Weg zu gehen, mit einer Messenger-Klasse um Daten Brennen die Beziehungen zu dem Laufenden halten?
Es ist ein großer Fehler für mich:
ich eine PupilViewModel erstellen, aber ich weiß nicht, in der NewPupilViewModel (PINK), ob ein SchoolclassCodeViewModel im YELLOW Usercontrol existiert, so konnte ich meine neue PupilViewModel zum BLUE Usercontrol hinzufügen .
SchoolclassCodeViewModel 1: N PupilViewModel.
3. Wie würden Sie dieses Problem lösen?
Lieber Robert, ich habe Recht, Sie gehen davon aus, dass ich ONE ViewModel für alle Ansichten verwende? Wenn ja, dann ist die Lösung einfach, weil ich das auch vorher probiert habe, ABER es gibt einen Nachteil => Für die wiederverwendbaren Ansichten kann ich den ViewModel_Code nicht wiederverwenden, ich müsste kopieren + einfügen, damit mein Code DOUBLE oder sogar TRIPLE verwendet das DocumentsView UserControl an 3 verschiedenen Orten. – Elisabeth
Ein weiterer großer Nachteil für mich, ein ViewModel und eine View mit den 6 Views zu haben, ist die View + VM wird über einen Viewmodel Locator aufgerufen und das View + ViewModel wird über MEFedMVVM erstellt. Das ist in Ordnung, aber die 6 Views innerhalb der One View - die in das ContentControl gelegt wird - können nicht von MEFedMVVM erstellt werden, da es jetzt NO 6 ViewMOdels mehr gibt ... also werde ich den gesamten visuellen Status in den 6 Views verlieren. – Elisabeth
Über y 2. Nachteil Ich glaube, ich lag falsch, weil das eine ViewModel im ContentControl - mit der einen Ansicht mit den 6 Ansichten - nur einmal erstellt und geteilt wird, so dass der Datenkontext, an den alle 6 Views gebunden sind, auch über Two-Way gespeichert wird Datenbindung. OK, also scheint mir nur der ERSTE Nachteil zu gelten. – Elisabeth