MVVM Light消息类型:何时使用每种类型?

Jas*_*wne 9 silverlight message mvvm-light message-type messenger

我刚刚开始使用MVVM Light框架学习Silverlight .最近我开始使用MVVM Light中的Messenger功能.

到目前为止,我已经下载并挖掘了Laurent发布的Clean Shutdown示例,并对Messenger类的工作方式有了基本的了解,但我仍然不确定何时使用哪种Message类型.

从该站点,这里是消息类型:

  • MessageBase:一个简单的消息类,包含有关消息发送者的可选信息.
  • GenericMessage:Content属性类型为T的简单消息.
  • NotificationMessage:用于向收件人发送通知(作为字符串).例如,将通知保存为Notifications类中的常量,然后将Notifications.Save发送给收件人.
  • NotificationMessage:与上面相同,但具有通用的Content属性.可用于将参数与通知一起传递给收件人.
  • NotificationMessageAction:向收件人发送通知,并允许收件人回拨给发件人.
  • NotificationMessageAction:向收件人发送通知,并允许收件人使用通用参数回拨发件人.
  • DialogMessage:用于请求收件人(通常是View)显示对话框,并将结果传递回调用者(使用回调).收件人可以选择如何使用标准MessageBox,自定义弹出窗口等显示对话框...
  • PropertyChangedMessage:用于广播发件人中更改的属性.实现与PropertyChanged事件相同的目的,但方式不那么严格.

我的问题是:当我通常使用这些消息类型中的每一种或者指向一篇破坏使用每种消息类型的利弊的文章时,有人可以向我解释吗?

eca*_*ell 6

如果你不尝试使你的编码适合消息,但是让消息做你想做的事情,你将为自己节省很多麻烦和烦恼.不要害怕对消息进行子类化,以使他们能够从他们那里做到你真正想要的.这是我使用mvvm-light时的第一个错误之一.

我的大多数消息都使用GenericMessage,Generic就是我要传输的内容......

例如,我有一个ExceptionMessage类

Public ExceptionMessage:GenericMessage<System.Exception>
Run Code Online (Sandbox Code Playgroud)

然后我用适当的值覆盖3个构造函数.

我发现它比使用鞋拔的东西更容易做到这一点.

我在这里有一个深刻的例子

它是关于我可以访问我的代码的消息传递的另一个问题...