web-dev-qa-db-fra.com

MVVM Light Messenger - Envoi et enregistrement d'objets

Quelqu'un pourrait-il avoir la gentillesse de me donner un exemple de la façon d'envoyer et d'enregistrer des objets personnalisés entre les classes à l'aide de MVVM Light Messenger ou de me diriger vers un didacticiel qui couvre cela (de préférence un exemple concret)? J'ai essayé d'utiliser Messenger pour passer un objet de mon projet à une autre classe mais je n'y suis jamais parvenu. J'ai cherché des exemples en ligne mais je n'ai rien trouvé qui me montre ce dont j'ai besoin. Merci.

32
Jason D

Jesse Liberty de Microsoft a une grande promenade concrète sur la façon d'utiliser la messagerie dans MVVM Light. La prémisse est de créer une classe qui agira comme votre type de message, vous 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;
}

Vous pouvez maintenant 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 sera 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;
}
59
Aaron McIver

J'ai trouvé CE et CE très utile. Pour la deuxième référence, utilisez le bouton Page suivante à la fin pour vous montrer les exemples qu'ils ont créés.

0
Ehsan