MVVM Light Messenger-envoi et enregistrement D'objets

Quelqu'un pourrait-il être assez gentil pour me donner un exemple de comment envoyer et enregistrer des objets personnalisés entre les classes en utilisant le messager de MVVM Light ou me diriger vers un tutoriel qui couvre cela (de préférence un exemple concret)? J'ai essayé D'utiliser Messenger pour passer un objet dans mon projet à une autre classe, mais je n'ai jamais réussi. J'ai cherché des exemples en ligne mais je n'ai rien trouvé qui me montre ce dont j'ai besoin. Grâce.

28
demandé sur Jason D 2013-06-08 02:33:52

1 réponses

Jesse Liberty de Microsoft a une grande Promenade concrète à travers sur la façon d'utiliser la messagerie dans MVVM Light. Le principe est de créer une classe qui agira comme type de message, s'abonner, puis publier.

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

Cela enverra essentiellement le message basé sur le type/classe ci-dessus...

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

Maintenant, vous pouvez vous inscrire pour le type de message donné, qui est la même classe définie ci-dessus et fournir la méthode qui sera appelée lorsque le message est reçu, dans ce cas - 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;
}
52
répondu Aaron McIver 2015-12-02 12:42:26