5

我对 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();
} 

谢谢。

4

1 回答 1

3

Now I have not ever used MVVM Light Messenger, but as with any event aggregator/message bus, it makes sense so that the handler method takes in the object that it handles as an argument:

I have checked the source code and the registration looks as follows:

public virtual void Register<TMessage>(object recipient, Action<TMessage> action)

With that in mind, this definition:

private void HandleClearSettings(ClearNewProjectSettingsMessage message)
{
}

should fix your registration:

Messenger.Default.Register<ClearNewProjectSettingsMessage>(this, HandleClearSettings);  
于 2013-04-16T09:55:24.513 回答