Controller in MVVM, Wie man Informationen aus dem viewmodel, um es in den controller?
Bauen wir eine Anwendung mit dem MVVM-Muster, haben wir Controller, die Kabel bis alle views und viewmodels mit DI. Alle Beispiele von MVVM die ich gesehen habe sind wirklich simpel und haben 1 anzeigen. Wie kann/sollte viewmodels sprechen zurück zu dem controller? Der controller kennt die Modelle und Ansichten, sollten die viewmodel-Ereignisse senden zurück an den controller? Wo sollte ein speichern passieren? Modell? Controller?
InformationsquelleAutor nportelli | 2009-09-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden wir Controller auch, aber in unserem Fall sind Sie verantwortlich für den Arbeitsablauf. Der Controller kennt das ViewModel und das Model aber nicht der konkrete Blick, denn diese werden injiziert, die von der IoC-Container.
Wenn Sie daran interessiert sind, ein Beispiel, das zeigt, mehr als nur eine Benutzeroberfläche (modal dialog-Assistenten mit bedingter workflow), dann haben Sie vielleicht einen Blick auf:
WPF Application Framework (WAF) - http://waf.codeplex.com
InformationsquelleAutor jbe
Könnte Ihr ViewModel nicht eine Abhängigkeit ein IController oder eine andere Schnittstelle, so dass Sie sprechen können, um es zurück? Ich versuche immer, so viel Anwendungslogik aus dem ViewModel wie möglich, da diese Klassen können leicht aufgebläht.
Ich bin damit einverstanden, dass das MVVM-frameworks sind in der Regel zu simpel, mit Ihren Proben. Insbesondere der Wechsel zwischen views/Bildschirme in Ihrer Anwendung ist etwas, was ich würde gerne sehen, weitere Beispiele. Ich erstelle eine IViewManager-Schnittstelle, zulassen, dass meine ViewModels zu verlangen, dass wir uns bewegen zu einer anderen Ansicht.
Hmmmm, ich bin mir nicht ganz sicher, ob ich verstehe, was Muster, das Sie verwenden. Sagen Sie, Sie haben einen controller pro view? Ist das nicht mehr MVC als MVVM? Vielleicht könnte man hinzufügen, ein wenig Beispiel code um deine Frage zu zeigen, wie Sie erstellen eine view und ein viewmodel.
Einen controller pro view ein controller pro use-case. Sorry, wenn ich das nicht machen, klar.
InformationsquelleAutor Mark Heath
Im Falle einer Anwendung mit mehreren Modulen und verlangt die Trennung von Bedenken, die ich würde empfehlen, mit dem prism framework.
http://msdn.microsoft.com/en-us/library/gg406140.aspx
InformationsquelleAutor Rafael Fernandes
Ich nutze ein ähnliches setup. In mein controller, wo meine DI-und Sicht-Injektion nach unten geht, habe ich manchmal halten Referenz auf das ViewModel (der Ansicht). Einigen Fällen, ich kann ein Ereignis auf der VM, die vom controller verarbeitet. In anderen extremen Fällen (wie wenn die VM/V erstellt wurde, die außerhalb der Steuerung sagen, dass Sie in eine andere VM), ich kann sogar die EventAggregator (mit einem starken "ref") zu hören, um Ereignisse können ausgelöst werden, auf die VM. In diesem Fall, eine gespeicherte ref, der VM ist nicht erforderlich.
InformationsquelleAutor Jeremiah Morrill
Wie über die Verwendung von Ereignissen, wobei der controller abonniert VM-Ereignisse oder mit Hilfe eines Mediators Muster, bei dem in einem mediator eingespritzt wird, in einer VM.
InformationsquelleAutor P.K