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