我遇到了古怪的问题。我注册收到如下消息:
Messenger.Default.Register<CreatedPatientMessage>(this, x =>
{
CurrentViewModel = targetLeftViewModel;
});
并发送如下信息
Messenger.Default.Send<CreatedPatientMessage>(new CreatedPatientMessage());
不幸的是它永远不会达到那个信息。我确保在发送消息之前注册了它。奇怪的是,如果我删除下面的行
CurrentViewModel = targetLeftViewModel;
并粘贴类似
的内容var name = "";
并在其上设置断点,它会停在那里,否则就不会。
答案 0 :(得分:0)
花了一段时间,但我提出了解决方案。我在构造函数中注册了接收消息,如下所示:
public Patient(BaseViewModel targetLeftViewModel, BaseViewModel targetRightViewModel)
{
this.TargetRightViewModel = targetRightViewModel;
Messenger.Default.Register<CreatedPatientMessage>(this, x =>
{
CurrentViewModel = TargetRightViewModel;
});
}
以上定义有效,但当您将负责接收消息的机构更改为:
CurrentViewModel = targetRightViewModel
不会。事实证明,发送到构造函数的参数然后从内存中删除,当需要使用它时,它无法检索,我猜这就是它从未达到过的原因。当我将它保存在属性(TargetRightViewModel)中时,为了保存其值,它按预期工作。