gpt4 book ai didi

c# - MVVM 轻型从 ViewModel 发送消息到 View

转载 作者:行者123 更新时间:2023-11-30 12:11:09 26 4
gpt4 key购买 nike

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

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

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

Messenger.Default.Send(new ClearNewProjectSettingsMessage());

这是我的 Message 类,我真的不知道该放什么,因为一切都在我的 View 类中

public class ClearNewProjectSettingsMessage
{
public ClearNewProjectSettingsMessage()
{

}
}

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

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

不幸的是,这无法编译,所以我尝试了这个:

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

但是还是不行..

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

private void ClearSettings()
{
passwordBox.Clear();
}

谢谢。

最佳答案

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

我查看了源码,注册的样子如下:

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

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

private void HandleClearSettings(ClearNewProjectSettingsMessage message)
{
}

应该修复您的注册:

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

关于c# - MVVM 轻型从 ViewModel 发送消息到 View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16033778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com