MVVM 灯从 ViewModel 向 View 发送消息

Reg*_*ser 5 c# mvvm messenger

我对 MVVM light 很陌生,我在使用 Messenger 时遇到了一些问题..

我正在尝试从 ViewModel 向 View 发送消息,但这对我不起作用,我尝试浏览帖子和示例代码,但我认为我缺少一些非常简单的东西..感谢您的帮助..

在我的 ViewModel 我发送一条消息

Messenger.Default.Send(new ClearNewProjectSettingsMessage());
Run Code Online (Sandbox Code Playgroud)

这是我的 Message 类,我真的不知道该放什么,因为所有内容都在我的 View 类中

public class ClearNewProjectSettingsMessage
{
    public ClearNewProjectSettingsMessage()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

我在 Views 构造函数中注册了消息:

Messenger.Default.Register<ClearNewProjectSettingsMessage>(
            this,
            () => ClearSettings()
);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不能编译所以我试过这个:

Messenger.Default.Register<ClearNewProjectSettingsMessage>(this,ClearSettings);  
Run Code Online (Sandbox Code Playgroud)

但是还是不行。。

这是我要调用的方法(在视图中):

private void ClearSettings()
{
        passwordBox.Clear();
} 
Run Code Online (Sandbox Code Playgroud)

谢谢。

Pat*_*iek 3

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

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

public virtual void Register<TMessage>(object recipient, Action<TMessage> action)
Run Code Online (Sandbox Code Playgroud)

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

private void HandleClearSettings(ClearNewProjectSettingsMessage message)
{
}
Run Code Online (Sandbox Code Playgroud)

应该修复您的注册:

Messenger.Default.Register<ClearNewProjectSettingsMessage>(this, HandleClearSettings);  
Run Code Online (Sandbox Code Playgroud)