C# MVVM light从ViewModel向视图发送消息

C# MVVM light从ViewModel向视图发送消息,c#,mvvm,messenger,C#,Mvvm,Messenger,我是MVVM light的新手,我在使用Messenger时遇到了一些问题 我试图从ViewModel向视图发送一条消息,但这对我来说不起作用,我尝试过阅读文章和示例代码,但我认为我缺少一些非常简单的东西。。我感谢你的帮助 在我的ViewModel中,我发送了一条消息 Messenger.Default.Send(new ClearNewProjectSettingsMessage()); 这是我的消息类,我真的不知道该在这里放什么,因为所有的东西都在我的视图类中 public class C

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

我试图从ViewModel向视图发送一条消息,但这对我来说不起作用,我尝试过阅读文章和示例代码,但我认为我缺少一些非常简单的东西。。我感谢你的帮助

在我的ViewModel中,我发送了一条消息

Messenger.Default.Send(new ClearNewProjectSettingsMessage());
这是我的消息类,我真的不知道该在这里放什么,因为所有的东西都在我的视图类中

public class ClearNewProjectSettingsMessage
{
    public ClearNewProjectSettingsMessage()
    {

    }
}
我在视图构造函数中注册消息:

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

谢谢。

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

我已经检查了源代码,注册情况如下:

public virtual void Register<TMessage>(object recipient, Action<TMessage> action)
应修复您的注册:

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

谢谢您的回复!我没有意识到handler方法将它处理的对象作为参数。。我使用以下命令注册了消息:Messenger.Default.Send(new ClearNewQCProjectSettingsMessage());可以吗?我真的不明白你是如何注册你的信息的,因为你没有任何指向“ClearNewProjectSettingsMessage”的信息,我需要进一步研究,你能给我指一下资源吗?谢谢@Manal,您可以在有疑问时进行检查。:)
public virtual void Register<TMessage>(object recipient, Action<TMessage> action)
private void HandleClearSettings(ClearNewProjectSettingsMessage message)
{
}
Messenger.Default.Register<ClearNewProjectSettingsMessage>(this, HandleClearSettings);