it-swarm.com.de

MVVM Light Messenger - Senden und Registrieren von Objekten

Könnte jemand so freundlich sein, mir ein Beispiel für das Senden und Registrieren von benutzerdefinierten Objekten zwischen Klassen mithilfe von MVVM Light's Messenger zu geben, oder mich auf ein Tutorial verweisen, das dies behandelt (vorzugsweise ein konkretes Beispiel)? Ich habe versucht, Messenger zu verwenden, um ein Objekt in meinem Projekt an eine andere Klasse zu übergeben, aber es gelang mir nie. Ich habe online nach Beispielen gesucht, aber nichts gefunden, was mir zeigt, was ich brauche. Vielen Dank.

32
Jason D

Jesse Liberty von Microsoft hat eine ausführliche Anleitung , wie Sie das Messaging in MVVM Light nutzen können. Die Voraussetzung ist, eine Klasse zu erstellen, die als Ihr Nachrichtentyp fungiert, abonniert und dann veröffentlicht.

public class GoToPageMessage
{
   public string PageName { get; set; }
}

Dies wird im Wesentlichen die Nachricht basierend auf dem obigen Typ/der obigen Klasse senden ...

private object GoToPage2()
{
   var msg = new GoToPageMessage() { PageName = "Page2" };
   Messenger.Default.Send<GoToPageMessage>( msg );
   return null;
}

Jetzt können Sie sich für den angegebenen Nachrichtentyp registrieren, der der oben definierten Klasse entspricht, und die Methode angeben, die beim Empfang der Nachricht aufgerufen wird, in diesem Fall ReceiveMessage.

Messenger.Default.Register<GoToPageMessage>
( 
     this, 
     ( action ) => ReceiveMessage( action ) 
);

private object ReceiveMessage( GoToPageMessage action )
{
   StringBuilder sb = new StringBuilder( "/Views/" );
   sb.Append( action.PageName );
   sb.Append( ".xaml" );
   NavigationService.Navigate( 
      new System.Uri( sb.ToString(), 
            System.UriKind.Relative ) );
   return null;
}
59
Aaron McIver

Ich fand THIS und THIS sehr nützlich. Für die zweite Referenz verwenden Sie die Schaltfläche Nächste Seite am Ende, um zu den Beispielen zu gelangen, die sie erstellt haben.

0
Ehsan