Hallo, ich befasse mich derzeit mit mvvm. Ich such nach einem geeigneten Archtektur wo jedes Model in einem hierachischen Objektmodel sein pendant hat als ViewModel auch in einem hierachischen Objektmodel. Ich frage mich an dieser Stelle, ob das die richtige Architektur ist und wenn ja, gibt es ein kleines Beispie, wie man sowas realisieren kann. Danke schon mal
Ich glaube nicht, dass dieser Ansatz zum Erfolg führt. Ein ViewModel ist ein "Model für die View". Es repräsentiert die Daten und die UI-Logik eines einzelnen UI-Moduls (lies: Eingabemaske, Dialog, Wizard, Report...), und die View das Layout/Design dieses Moduls. Wenn es nicht gerade um "Hello World" geht, wirst Du mehrere UI-Module in Deiner Anwendung haben, und deren Schnitt richtet sich danach, wie die Interaktion mit dem Benutzer ablaufen soll.
Das (Domain) Model repräsentiert die Fachlichkeit Deiner Anwendung - die fachlichen Entitäten, deren Beziehungen und die darin möglichen Operationen. Dieses Model als ganzes hast Du nur einmal, und seine innere Struktur wird von der Fachlichkeit bestimmt und nicht davon, wie mit dieser Fachlichkeit interagiert werden soll. Ich sehe keinen Sinn darin, eine 1:1-Beziehung zwischen einzelnen Teilen des Models (das meinstest Du doch mit "Domainklasse") und ViewModeln und damit UI-Modulen herzustellen. Beide haben unterschiedliche Aufgaben. Auf dem gleichen Model kann man beliebig viele unterschiedliche Anwendungen aufbauen - ganz einfache mit wenigen Views oder hochkomplexe. Der Witz von MVVM ist ja gerade, diese Trennung unterschiedlicher Belange zu erleichtern, weshalb ich es für kontraproduktiv halte, sie über eine Entsprechung in der Architektur wieder einzuführen.
Vielen Dank, ich habe es verstanden. darf es trotzdem keine Beziehungen zwischen den einzelnen Viewmodels geben, wenn sie unter sich kommunizieren sollen?
Dem kann ich nur beipflichten. Und eine wirklich gute Adresse, um zu studieren, wie ein UI aus mehreren Views und ViewModels zusammengesetzt werden kann und wie diese miteinander kommunizieren können, ist [url=http://compositewpf.codeplex.com/]Prism[/url].
Vielen Dank, Prism schein mir ein bißchen überkandidelt. Die Artikelserie von Norbert Eder ist richtig gut und ich werde daruaf setzen. Lose Kommunikation zwischen ViewModels [url=http://devtyr.norberteder.com/post/Lose-Kommunikation-zwischen-ViewModels.aspx]Den Text zum Link bitte hier eingeben...[/url]