我最近将旧项目从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");
}
但是当我在侦听器上放置一个断点时,它永远不会命中
我想念什么,但是呢?
答案 0 :(得分:0)
只需为您检查代码和单元测试。
https://github.com/Catel/Catel/blob/develop/src/Catel.Tests/Messaging/MessageMediatorFacts.cs#L199
据我所记得,Catel中的视图模型应自动将其自身注册为接收者,但也许出于性能原因我们将其删除(选择加入模型)。不过,在发行说明中找不到任何内容。
无论如何,请尝试手动注册(并且不要忘记注销!)虚拟机(我建议在InitializeAsync和CloseAsync中使用)。