0

私のビューの1つにドロップダウンメニューが含まれています。選択が行われるとき、そのビューモデルとプログラム内の他のすべてのビューモデルは、ビューを更新できるように変更を認識している必要があります。現在、各ビューモデルには選択範囲の独自のコピーが含まれており、変更された場合はすべて手動で更新する必要があります(それぞれにパブリックRefresh(int newVal)があります)。これを行うためのより良い方法はありますか?

4

3 に答える 3

1

考えられるアプローチは、イベント アグリゲーターを使用することです。アグリゲーターは、パブリッシャーとレシーバーの間でメッセージをディスパッチするために使用されます。

メッセージを送信する必要があるオブジェクトはメッセージ タイプを に登録し、受信EventAggregatorする必要があるオブジェクトはにも登録します。EventAggregator

これを実装するには多くの方法があります。任意の MVVM フレームワークを使用することをお勧めします。ほとんどの一般的なフレームワークは、実績のあるこれの実装を提供します。

例としては、Caliburn Microがあります。CM フレームワークは、EventAgregatorこのためのクラスを既に提供しています。

この例については、Caliburn.Micro の EventAggregator を使用したメッセージングの概要を参照してください。

于 2012-11-27T10:18:40.833 に答える
1

イベント アグリゲーターを使用して、すべてのビュー モデルで処理できるイベントを発行することができます (おそらく何らかの基本クラスで?)。

于 2012-11-27T10:05:33.570 に答える
1

(集約された) イベントを使用します。

ビューが読み込まれたときにイベントをサブスクライブし、ビューがアンロードされたときにサブスクライブを解除し、読み込まれたときにビュー モデル内の変数を必ず初期化してください。次に、選択が変更されたときにイベントを公開します (新しいデータをパラメーターとして渡します)。

于 2012-11-27T10:07:09.077 に答える