Frage

Ich baue eine WPF -App und versuche, mich an MVVM -Best Practices anzupassen. Ich benutze das MVVM Foundation Framework und bemerkte das Bote Klasse, für die ich gelesen habe, sollte verwendet werden Umgang mit Dialogen in WPF. Das klingt großartig, aber ich verstehe völlig nicht, wie man einen Boten für diesen Zweck benutzt. Im wahrsten Sinne des Wortes möchte ich nur einen Modal über den Dialog öffnen -ich muss keine Nachrichten hin und her übergeben.

War die Absicht der Messenger -Klasse für Fälle verwendet, in denen Dialoge eine Nachricht von ihrem übergeordneten oder an ihre übergeordneten Nachricht zurückgeben? Ist es Overkill für einen Über -Dialog? Wäre es mir besser dran, einfach Code zu einem Ereignishandler hinzuzufügen, um den Dialog zu zeigen?

War es hilfreich?

Lösung

Die Idee hinter dem Messaging -Muster hat nichts speziell mit der Anzeige von Dialogen zu tun. Die Idee ist einfach, eine entkoppelte Möglichkeit zur Kommunikation zwischen ViewModels zu bieten.

Sie können diese Infrastruktur nutzen, um Ihr Problem zu lösen, müssen jedoch die Anzeige des Dialogs selbst implementieren.

Wie Phillip oben gezeigt hat, können Sie Nachrichten zwischen ViewModels senden. Wenn Ihr ViewModel die Nachricht empfängt, kann die eigene interne Eigenschaft festgelegt werden, sagen Sie "showDialog", um true zu sein.

Sie können dann eine Bindung haben, die auf diesen Eigenschaftsänderungsbetrieb reagiert und einen Dialog eröffnet.

Ich habe auch ein einfaches Messaging -Framework für das MVVM -Muster erstellt, das sich von Joshs Idee (und mehreren anderen vorhandenen Frameworks) auszeichnet hier

Andere Tipps

Angenommen, Sie haben eine Elternansicht und eine Dialogansicht. In MVVM hätten beide ein Ansichtsmodell. Es ist gut, diese Ansichtsmodelle entkoppelt zu halten, dh sie haben keine Verweise auf einander. Und doch müssen sie miteinander kommunizieren. Die Messenger -Klasse fungiert als Überwachung oder Mediator, um die Kommunikation von Informationen zwischen den beiden Klassen zu vermitteln. Sehen Sie den Code von entnommen von Joshs Blog.

alt text

Hier ist Objekt A. Der Anruf bei der Registermethode des Mediators implementiert: Wenn ich das message ObjectBSaid -etwas vom Mediator empfange, werde ich sie im Mitglied WhatObjectbsays zwischengespeichert.

alt text

Hier ist Objekt B, das implementiert: Ich sende ein Message ObjectBSaiding etwas. Beachten Sie, dass Objekt B nichts über Objekt A weiß. Dies ist eine gute Entkopplung, und deshalb ist das Mediatormuster eine gute Idee. Auf diese Weise empfiehlt die MVVM -Stiftung, dass Informationen zwischen Ansichtsmodellen übergeben werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top