9

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

到目前为止,我已经下载并深入研究了 Laurent 发布的Clean Shutdown 示例,并对 Messenger 类的工作原理有了基本的了解,但我仍然有点不确定何时使用哪种 Message 类型。

从该站点,以下是消息类型:

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

我的问题是:谁能向我解释我通常什么时候会使用这些消息类型中的每一种,或者指向我一篇文章来分解使用每种消息类型的优缺点?

4

1 回答 1

6

如果您不尝试将编码与消息相匹配,而是让消息按照您的意愿行事,您将为自己省去很多麻烦和烦恼。不要害怕对消息进行子类化,以使它们做你真正想要的。这是我使用 mvvm-light 时的第一个错误。

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

例如我有一个 ExceptionMessage 类

Public ExceptionMessage:GenericMessage<System.Exception>

然后我用正确的值覆盖 3 个构造函数。

我发现这样做比把东西硬塞到位要容易得多。

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

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

于 2011-06-11T22:50:13.833 回答