MVVM Light Messenger
Я новичок в MVVM Light и пытаюсь выучить и реализовать класс Messenger. Я прочитал много других уроков и сообщений по мессенджеру, но все еще не могу заставить его работать. Ниже приведен код, который я написал, чтобы помочь мне учиться. Из моих исследований я думаю, что все правильно реализовано, но это не работает. Кто-нибудь знает, что я делаю не так?
public class MainViewModel : ViewModelBase
{
public MainViewModel() { }
private RelayCommand _sendMessage;
public RelayCommand SendMessage
{
get
{
return _sendMessage
?? (_sendMessage = new RelayCommand(
() =>
{
var pInfo = new PersonalInfo { Name = "Some Name", Age = 31 };
Messenger.Default.Send(pInfo);
}));
}
}
}
public class MessageReciever
{
public MessageReciever()
{
Messenger.Default.Register<PersonalInfo>(this,
action =>
{
Debug.WriteLine(action.Age);
Debug.WriteLine(action.Name);
}
);
}
}
public class PersonalInfo
{
public string Name { get; set; }
public int Age { get; set; }
}
2 ответа
Попробуй это:
public class MainViewModel : ViewModelBase
{
MessageReciever mr = new MessageReciever();
public MainViewModel() { }
private RelayCommand _sendMessage;
public RelayCommand SendMessage {
get {
return _sendMessage
?? (_sendMessage = new RelayCommand(
() =>
{
var pInfo = new PersonalInfoMessage(new PersonalInfo { Name = "Some Name", Age = 31 } );
Messenger.Default.Send(pInfo);
}));
}
}
}
public class MessageReciever
{
public MessageReciever() {
Messenger.Default.Register<PersonalInfoMessage>(this,
action =>
{
Debug.WriteLine(action.Content.Age);
Debug.WriteLine(action.Content.Name);
}
);
}
}
public class PersonalInfo
{
public string Name { get; set; }
public int Age { get; set; }
}
public class PersonalInfoMessage : GenericMessage<PersonalInfo>
{
public PersonalInfoMessage(PersonalInfo content)
: base(content) {
}
}
Как убедиться, что получатель сообщения создан? Возможно, вы захотите создать экземпляр в своей модели представления отправки - просто для изучения.
* Как правило, вы используете Messenger для просмотра моделей, чтобы "общаться друг с другом". Поэтому лучший способ узнать это - иметь два элемента управления с отдельными моделями представления.
Если вы заставите получателя сообщения расширить baseviewmodel и привязать к нему новый элемент управления в своем приложении, это может сделать более очевидным, что происходит.*