【发布时间】:2015-12-04 22:46:32
【问题描述】:
我在我的项目中使用 mvvm light。对于视图之间的通信,我使用的是 GalaSoft.MvvmLight.Messaging.Messenger 但它没有按预期工作。
下面的代码:
注册一个信使
GalaMessenger.Default.Register<ServerNewMessenger>(ServiceLocator.Current.GetInstance<ServerNewViewModel>(), (msg) =>
{
Debug.Write("Click");
});
发送信使给接收者
Messenger.Default.Send<ServerNewMessenger>(newItem, ServiceLocator.Current.GetInstance<ServerNewViewModel>());
我从来没有收到过消息。但是当我通过 send 方法删除收件人时:
Messenger.Default.Send<ServerNewMessenger>(newItem);
然后它工作正常。为什么?
【问题讨论】:
-
在 Default.Send 之前初始化包含 Default.Register 的类/函数非常重要。这可能是你的问题。检查一下。
-
是的,我确实在 Default.Send 之前执行了 Default.Register。
-
对
GetInstance的调用是否在每次调用时返回不同的实例? -
是的,我使用
GetHashCode()方法进行验证,它显示了相同的代码,这意味着它指向同一个对象。
标签: c# wpf mvvm mvvm-light