我一直在重构一些最初在MVVM Foundation中使用Messenger
的代码,现在使用MVVM Light Toolit中的Messenger
。我似乎无法找到等效的一件事是你要做的就是发送一个令牌(即令牌作为消息和的唯一标识符)消息本身)。
原始代码(MVVM Foundation) - 一个字符串可以完成所有操作
// send code
mvvmFoundationMessenger.NotifyColleagues("QuestionTimedOut");
// register code
mvvmFoundationMessenger.Register(
"QuestionTimedOut",
() => UpdateOnQuestionTimedOut());
新代码(MVVM Light) - 有比这更优雅的解决方案吗?
// send code
mvvmLightMessenger.Send("QuestionTimedOut", "QuestionTimedOut");
// register code
mvvmLightMessenger.Register<string>(
this,
"QuestionTimedOut",
token => UpdateOnQuestionTimedOut());
我意识到我可以明确地新建一个NotificationMessage
,但这会增加更多的代码。
答案 0 :(得分:5)
好点。我把它放在MVVM Light VNext的积压上。
答案 1 :(得分:0)
您可以从MvvmLight的Messenger
派生并添加自己的便捷方法,也可以在扩展程序中添加Messenger
Extension Methods。