2011-06-08 60 views
9

我刚刚开始学习使用MVVM Light framework的Silverlight。最近我已经开始使用MVVM Light中的Messenger功能。MVVM Light消息类型:何时使用每种类型?

到目前为止,我已经下载并挖掘了Laurent发布的Clean Shutdown example,并对Messenger类的工作原理有了基本的了解,但我仍然有些不确定何时使用哪种消息类型。

从网站,这里的消息类型:

  • MessageBase:一个简单的邮件类,携带消息的发送者可选信息 。
  • GenericMessage:与 类型T的内容属性的简单的消息
  • NotificationMessage:用于发送通知(字符串)向 收件人。例如,将您的 通知保存为 通知类中的常量,然后发送 通知。保存到收件人。
  • NotificationMessage:同上,但具有通用内容 属性。可用于将 参数一起传递给收件人 并附带通知。
  • NotificationMessageAction:向收件人发送通知 并允许收件人回拨 发件人。
  • NotificationMessageAction:向收件人 发送通知,并允许收件人使用通用参数调用 发件人。
  • DialogMessage:用于请求接收者(通常是视图) 显示一个对话框,并传递 结果返回给调用者(使用 回调)。收件人可以选择 如何显示的对话框中,要么 标准的MessageBox,使用自定义 弹出,等...
  • PropertyChangedMessage:用于播出的一个属性的发送者改变 。完成与PropertyChanged 事件相同的目的 ,但采用的方式不太严密。

我的问题是:任何人都可以向我解释的时候我通常会使用这些消息类型或指向我,打破了使用每种消息类型的利弊的文章?

回答

6

如果你不尝试去适应你的消息编码,而是让你的消息做你想做的事情,你会为自己节省很多头痛和烦恼。不要害怕继承消息,让他们做你真正想从他们那里得到的东西。那是使用mvvm-light时我的第一个错误之一。

我的大多数信息使用与通用是什么,我试图转移GenericMessage ...

比如我有一个ExceptionMessage类

Public ExceptionMessage:GenericMessage<System.Exception> 

然后我重写3项中的构造适当的价值。

我发现,它比鞋匠的东西更容易做到这一点。

我有一个深入的例子从有关信息另一个问题,我必须进入我的代码here

其...

+0

子类化也使得作为信息可以适当命名的更干净的代码。此外,它还允许更清晰和更集中 - 即更好的可寻址消息处理。 – AxelEckenberger 2011-06-12 21:00:51