MVVM从ViewModel发送消息到View

时间:2013-04-16 09:47:13

标签: c# mvvm messenger

我对MVVM灯很新,我在使用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 个答案:

答案 0 :(得分:3)

现在我还没有使用MVVM Light Messenger,但是与任何事件聚合器/消息总线一样,它是有意义的,因此处理程序方法接受它处理作为参数的对象: / p>

我检查了源代码,注册如下:

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

考虑到这一点,这个定义:

private void HandleClearSettings(ClearNewProjectSettingsMessage message)
{
}

应修正您的注册:

Messenger.Default.Register<ClearNewProjectSettingsMessage>(this, HandleClearSettings);