MVVM Light Messenger-wysyłanie i rejestrowanie obiektów

Czy ktoś mógłby mi dać przykład jak wysyłać i rejestrować własne obiekty między klasami za pomocą komunikatora MVVM Light lub wskazać mi tutorial, który to omawia (najlepiej konkretny przykład)? Próbowałem użyć Messenger, aby przekazać obiekt w moim projekcie do innej klasy, ale nigdy mi się to nie udało. Szukałem przykładów w Internecie, ale nie znalazłem niczego, co pokazuje mi, czego potrzebuję. Dzięki.

Author: Jason D, 2013-06-08

1 answers

Jesse Liberty z Microsoftu ma wielkikonkretny spacer o tym, jak wykorzystać wiadomości w świetle MVVM. Założeniem jest utworzenie klasy, która będzie działać jako typ wiadomości, subskrybować, a następnie opublikować.

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

To zasadniczo wyśle wiadomość opartą na powyższym typie / klasie...

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

Teraz możesz zarejestrować się dla danego typu wiadomości, który jest tą samą klasą zdefiniowaną powyżej i podać metodę, która zostanie wywołana po odebraniu wiadomości, w tym przypadku 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
Author: Aaron McIver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-02 12:42:26