Подтвердить что ты не робот

MVVM Light Messenger - отправка и регистрация объектов

Может ли кто-нибудь быть достаточно любезен, чтобы дать мне пример того, как отправлять и регистрировать пользовательские объекты между классами с помощью MVVM Light Messenger или указывать мне учебник, который охватывает это (желательно конкретный пример)? Я пытался использовать Messenger для передачи объекта в моем проекте в другой класс, но я никогда не был успешным. Я смотрел онлайн для примеров, но не нашел ничего, что показало бы мне, что мне нужно. Спасибо.

4b9b3361

Ответ 1

Джесс Либерти из Microsoft имеет отличную конкретную прогулку о том, как использовать обмен сообщениями в MVVM Light. Предпосылка заключается в создании класса, который будет действовать как ваш тип сообщения, подписаться, а затем опубликовать.

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

Это по существу отправит сообщение на основе вышеуказанного типа/класса...

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

Теперь вы можете зарегистрироваться для данного типа сообщения, который является тем же классом, который указан выше, и предоставить метод, который будет вызываться при получении сообщения, в этом случае 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;
}