MVVM光从ViewModel发送消息到View

本文关键字:消息 View 光从 ViewModel MVVM | 更新日期: 2023-09-27 18:09:37

我是MVVM light的新手,我在使用Messenger时遇到了一些问题。

我试图从ViewModel发送消息到视图,但这对我不起作用,我试过通过帖子和示例代码,但我认为有一些非常简单的东西,我错过了。谢谢你的帮助。

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

谢谢。

MVVM光从ViewModel发送消息到View

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

我已经检查了源代码和注册看起来如下:

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

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

private void HandleClearSettings(ClearNewProjectSettingsMessage message)
{
}

应该修复你的注册:

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