IMessageMediator 没有命中断点

IMessageMediator doesn't hit breakpoint

我最近将一个旧项目从 Catel 4.3 升级到了 Catel 5.0。

该项目使用了不再受支持的 InterestedIn 属性。 我尝试用 IMediator 替换它,但无法正常工作。

在监听的 ViewModel 中,我有以下代码:

private IMessageMediator _messageMediator;

public CustomerControlViewModel(IMessageMediator messageMediator)
{
    Argument.IsNotNull(() => messageMediator);
    _messageMediator = messageMediator;
}

[MessageRecipient(Tag = "AddCustomerWindowViewModel")]
protected void AddCustomerWindowViewModelExecuted(string value)
{
    if (value == "OnAccept")
        RetrieveCustomers();
}

在发送 ViewModel 中我有:

public AddCustomerWindowViewModel(IMessageMediator messageMediator)
{
        Argument.IsNotNull(() => messageMediator);
        _messageMediator = messageMediator;
}

private void OnAccept()
{

    _messageMediator.SendMessage("OnAccept","AddCustomerWindowViewModel");

}

但是当我在侦听器上放置断点时它永远不会命中

我错过了什么,但是什么?

刚刚为您检查了代码和单元测试。

  1. 我建议您为标签使用常量(以防止出现任何拼写错误)
  2. 您应该注册收件人,如下所示:

https://github.com/Catel/Catel/blob/develop/src/Catel.Tests/Messaging/MessageMediatorFacts.cs#L199

据我所知,Catel 中的视图模型应该自动将自己注册为接收者,但也许我们出于性能原因将其删除(选择加入模型)。但是在发行说明中找不到任何内容。

无论如何,请尝试手动注册(并且不要忘记注销!)虚拟机(我建议在 InitializeAsync 和 CloseAsync 中)。