2012-04-12 18 views
3

Ich habe eine App, die viele View-ViewModel-Paare basierend auf der gleichen Ansicht und ViewModel präsentiert. (dh es gibt viele view -> viewModel-Instanzpaare)So senden Sie eine Nachricht an eine Ansicht von vielen

Ich kann den Messenger verwenden, um Nachrichten von viewModel zu senden/zu registrieren, und wenn ich eine Nachricht aus einer Ansicht sende, wird sie von allen Ansichten verarbeitet (Sie alle registrieren sich für die Nachricht).

Wie verwende ich den Messenger, um eine Nachricht vom viewModel an die spezifische Ansicht zu senden, die das viewModel erstellt hat? (Alle Ansichten haben sich für die Nachricht registriert, aber ich möchte nur, dass eine der Ansichten die Nachricht verarbeitet.)

+0

Gemäß der Dokumentation werden Nachrichten nur von den Objekten empfangen, die registriert sind, um auf Nachrichten desselben Typs zu warten. Können Sie versuchen, untergeordnete Nachrichtenklassen zu erstellen und die Registrierung und das Senden für diese Typen zu implementieren? Oder muss Ihr Programm zulassen, dass mehrere Instanzen derselben Ansicht verfügbar sind? http://blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx – Jesslyn

Antwort

1

Sie können den Token beim Senden und Registrieren von Messaging verwenden.

Angenommen, Sie haben Nachricht von Ansichtsmodell passieren können Sie wie folgt verwenden Messenging ABCView dann ..

Für Ex, wenn Sie dann boolean Wert übergeben haben zu verwenden:

Messenger.Defalut.Send<bool>(true,"ForAbcView"); 

Und in ABCView

Messenger.Default.Register<bool>(this,"ForAbcView",(b)=>{ //Some Code }); 

mit der Verwendung von Token den Messenger Sender wird für das Register sieht nur die gleichen Grund haben: Sie können wie folgt registrieren. Es ruft nur die Methode auf, die dasselbe haben soll.

Verwandte Themen