IMessageMediator没有达到断点

时间:2019-07-26 13:27:37

标签: c# mvvm catel

我最近将旧项目从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 个答案:

答案 0 :(得分:0)

只需为您检查代码和单元测试。

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

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

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

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