前段时间我问了一个问题:Use MVVM Light's Messenger to Pass Values Between View Model
我今天去测试答案,但似乎没有用。我的实现如下:
MessengerInstance.Send(SelectedDocument, Model.StaticEnums.Tokens.SettingstoMain);
和
MessengerInstance.Register<XDocument>(this, Model.StaticEnums.Tokens.SettingstoMain, settings => CopySettings(settings));
我的问题是,这种实现不起作用。相反,MessengerInstance.Send和MessengerInstance.Register的参数似乎与答案中的实现明显不同。
我在这里做错了什么?我在上一个问题的答案中的实现是否正确?
答案 0 :(得分:7)
过去几个月我没有使用过MVVM灯。但我总是这样发送和注册消息(见代码)。也许新版本有更好的方法。但我不认为。
GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<string>(this, (a) => { MessageBox.Show(a); });
GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<string>("abc");
确保首先在发送邮件之前注册邮件。
编辑:对于每种消息类型,我创建了一个自定义消息类。因此,在应用程序中使用消息的代码中更容易找到。