Может ли кто-нибудь быть достаточно любезен, чтобы дать мне пример того, как отправлять и регистрировать пользовательские объекты между классами с помощью MVVM Light Messenger или указывать мне учебник, который охватывает это (желательно конкретный пример)? Я пытался использовать Messenger для передачи объекта в моем проекте в другой класс, но я никогда не был успешным. Я смотрел онлайн для примеров, но не нашел ничего, что показало бы мне, что мне нужно. Спасибо.
MVVM Light Messenger - отправка и регистрация объектов
Ответ 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;
}