9

MVVMLightフレームワークを使用してSilverlightの学習を始めたところです。ごく最近、MVVMLightのMessenger機能を使い始めました。

これまで、Laurentによって投稿されたClean Shutdownの例をダウンロードして掘り下げ、Messengerクラスがどのように機能するかについての基本的な理解はありますが、どのメッセージタイプをいつ使用するかはまだ少しわかりません。

サイトからのメッセージタイプは次のとおりです。

  • MessageBase:メッセージの送信者に関するオプションの情報を運ぶ単純なメッセージクラス。
  • GenericMessage:タイプTのContentプロパティを持つ単純なメッセージ。
  • NotificationMessage:受信者に(文字列として)通知を送信するために使用されます。たとえば、通知を通知クラスに定数として保存してから、Notifications.Saveを受信者に送信します。
  • NotificationMessage:上記と同じですが、一般的なContentプロパティを使用します。通知とともにパラメータを受信者に渡すために使用できます。
  • NotificationMessageAction:受信者に通知を送信し、受信者が送信者にコールバックできるようにします。
  • NotificationMessageAction:受信者に通知を送信し、受信者が汎用パラメーターを使用して送信者にコールバックできるようにします。
  • DialogMessage:受信者(通常はビュー)がダイアログを表示し、結果を(コールバックを使用して)呼び出し元に返すように要求するために使用されます。受信者は、標準のメッセージボックス、カスタムポップアップなど、ダイアログの表示方法を選択できます…</ li>
  • PropertyChangedMessage:プロパティが送信者で変更されたことをブロードキャストするために使用されます。PropertyChangedイベントと同じ目的を果たしますが、より厳密ではありません。

私の質問はこれです:私がこれらのメッセージタイプのそれぞれを通常使用するとき、または各メッセージタイプを使用することの賛否両論を分解する記事を私に指摘するとき、誰かが私に説明できますか?

4

1 に答える 1

6

コーディングをメッセージに適合させようとせず、メッセージに希望どおりの動作をさせると、多くの頭痛や煩わしさを軽減できます。メッセージをサブクラス化して、メッセージに本当に必要なことを実行させることを恐れないでください。これは、mvvm-lightを使用したときの私の最初の間違いの1つでした。

私のメッセージのほとんどはGenericMessageを使用しており、Genericは私が転送しようとしているものです...

たとえば、私はExceptionMessageクラスを持っています

Public ExceptionMessage:GenericMessage<System.Exception>

次に、3つのコンストラクターを適切な値でオーバーライドします。

私は、靴べらを所定の位置に配置するよりも、この方法でそれを行う方がはるかに簡単であることに気づきました。

ここに詳細な例があります

コードにアクセスできたメッセージングに関する別の質問からです...

于 2011-06-11T22:50:13.833 に答える