MVVM light отправляет сообщение из ViewModel в View
Я очень новичок в MVVM light и у меня возникли некоторые проблемы с использованием Messenger.
Я пытаюсь отправить сообщение из ViewModel в View, но это не работает для меня, я попытался просмотреть сообщения и примеры кода, но я думаю, что есть кое-что очень простое, что мне не хватает.. Я ценю вашу помощь..
В моей ViewModel я отправляю сообщение
Messenger.Default.Send(new ClearNewProjectSettingsMessage());
Это мой класс Message, я не знаю, что здесь поставить, потому что все в моем классе View.
public class ClearNewProjectSettingsMessage
{
public ClearNewProjectSettingsMessage()
{
}
}
Я регистрирую сообщение в конструкторе Views:
Messenger.Default.Register<ClearNewProjectSettingsMessage>(
this,
() => ClearSettings()
);
Это, к сожалению, не компилируется, поэтому я попробовал это:
Messenger.Default.Register<ClearNewProjectSettingsMessage>(this,ClearSettings);
Но это все равно не работает..
Это метод, который я хочу вызвать (в представлении):
private void ClearSettings()
{
passwordBox.Clear();
}
Благодарю.
1 ответ
Сейчас я никогда не использовал MVVM Light Messenger, но, как и для любого агрегатора событий / шины сообщений, имеет смысл, чтобы метод-обработчик принимал объект, который он обрабатывает, в качестве аргумента:
Я проверил исходный код и регистрация выглядит следующим образом:
public virtual void Register<TMessage>(object recipient, Action<TMessage> action)
Имея это в виду, это определение:
private void HandleClearSettings(ClearNewProjectSettingsMessage message)
{
}
следует исправить вашу регистрацию:
Messenger.Default.Register<ClearNewProjectSettingsMessage>(this, HandleClearSettings);