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);  
Другие вопросы по тегам