2

不久前,我问了一个问题:使用 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 的参数似乎都与答案中的实现截然不同。

我在这里做错了什么?我上一个问题的答案中的实现是否正确?

4

1 回答 1

7

在过去的几个月里,我没有经常使用 MVVM light。但我总是以这种方式发送和注册消息(见代码)。也许新版本中有更好的方法。但我不认为。

GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<string>(this, (a) => { MessageBox.Show(a); });

GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<string>("abc");

确保在发送消息之前先注册消息。

编辑:对于每种消息类型,我创建了一个自定义消息类。因此更容易在代码中找到应用程序中使用消息的位置。

于 2013-08-14T20:47:35.460 回答