0

2 つのビュー モデルがViewModelAありViewModelB、どちらも共通を使用してDataServiceA、というユーザー設定を取得しますThemeViewModelB はその設定を変更してデータベースに保存できます。これが発生すると、ViewModelAはそのテーマ値を更新しません。
私はそれを更新できるようにするための適切な行動方針を理解しようとしており、いくつかのオプションを考え出しました:

  1. 値が保存されたときに DataService がプロパティ通知を発生させるようにします (私はこれが好きではありません)。
  2. MessengerService を使用して同期を維持します。(メッセージ ループに陥っている問題があります)
  3. 1 つの ViewModel を別の ViewModel に渡す

何か案は?

4

2 に答える 2

1

イベントを使用するのに良いケースのように聞こえますが、両方がDataServiceAにアクセスできる場合、テーマが変更されたときにイベントを発生させることはできませんか?

つまり、DataServiceAでは、テーマが変更されると「OnThemeChanged」イベントが発生し、ViewModelsはイベントをサブスクライブして、発生時にコンテンツを更新できます。

于 2012-11-27T14:10:10.357 に答える
0

両方がの同じインスタンスを使用する場合、INotifyPropertyChangedも実装し、プロパティが変更されたときにイベントを発生させることDataServiceAは、それほど悪い考えではないと思います。DataServiceATheme

ただし、そのアイデアが気に入らない場合は、EventAggregatorを使用してイベントを公開することもできます。個人的には最初のオプションで十分だと思いますが、それはあなたの電話です...

于 2012-11-27T14:02:03.487 に答える