MVVM Light Типы сообщений: когда использовать каждый тип? - PullRequest
9 голосов
/ 08 июня 2011

Я только начал изучать Silverlight с MVVM Light Framework .Совсем недавно я начал изучать функции Messenger в MVVM Light.

До сих пор я скачал и вырыл пример Clean Shutdown , опубликованный Laurent, и у меня есть общее представление о том, как работает класс Messenger, но я все еще немного не уверен, когда использоватьКакой тип сообщения.

С сайта, вот типы сообщений:

  • MessageBase : простой класс сообщений, содержащий дополнительную информацию оотправитель сообщения.
  • GenericMessage : простое сообщение со свойством Content типа T.
  • NotificationMessage : используется для отправки уведомления (какстрока) получателю.Например, сохраните ваши уведомления как константы в классе «Уведомления», а затем отправьте получателю уведомление.
  • NotificationMessage : То же, что и выше, но с универсальным свойством Content.Может использоваться для передачи параметра получателю вместе с уведомлением.
  • NotificationMessageAction : отправляет уведомление получателю и позволяет получателю перезвонить отправителю.
  • NotificationMessageAction : отправляет уведомление получателю и позволяет получателю перезвонить отправителю с универсальным параметром.
  • DialogMessage : используется для запроса получателя (как правило, представление) отображает диалоговое окно и передает результат обратно вызывающей стороне (с помощью обратного вызова).Получатель может выбрать, как отображать диалоговое окно, либо со стандартным MessageBox, с настраиваемым всплывающим окном и т. Д.…
  • PropertyChangedMessage : используется для трансляции изменения свойства в отправителе.Выполняет ту же цель, что и событие PropertyChanged, но менее жестким способом.

У меня такой вопрос: может ли кто-нибудь объяснить мне, когда я обычно буду использовать каждый из этих типов сообщений или точкименя к статье, которая разбивает плюсы и минусы использования каждого типа сообщения?

1 Ответ

6 голосов
/ 12 июня 2011

Вы избавите себя от множества головных болей и раздражений, если не пытаетесь приспособить свою кодировку к сообщениям, а заставляете сообщения делать то, что вы хотите.Не бойтесь создавать подклассы сообщений, чтобы заставить их делать то, что вы действительно хотите от них.Это была одна из моих первых ошибок при использовании mvvm-light.

В большинстве моих сообщений используется GenericMessage, а Generic - это то, что я пытаюсь передать ...

например, у меня естьКласс ExceptionMessage, который

Public ExceptionMessage:GenericMessage<System.Exception>

, тогда я переопределяю 3 конструктора с правильными значениями.

Я обнаружил, что НАМНОГО проще сделать это таким образом, чем рожать вещи на место.

У меня есть подробный пример здесь

Это из другого вопроса об обмене сообщениями, где у меня был доступ к моему коду ...

...