2011-06-08 61 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