WPF + Prism + ReactiveProperty(Rx)を使ったアプリケーションを作成しています。
MVVMパターンでViewModelの連携を取る**(連携させて良いかも含めて)**一般的な方法が知りたいです。
例えばAViewModelのプロパティの値が変更されたときに、
BViewModel、CViewModelのプロパティも変更するといったことを
みなさんがどのように実現させているか教えてください。
ViewModelは全て1つのプロジェクトで管理されていて、いずれもシングルトンです。
AViewModelのプロパティの値はViewの表示状態を管理するためだけに使用します。
私が思いつく方法を書いてみましたが、別の方法などあれば参考にさせてください。
###方法①
EventAggrigatorを利用してイベントを発行/購読する。
EventAggrigatorは本来モジュール同士連携させるためのもの。
このようなViewModel同士の連携での使用には違和感がある。
###方法②
DIコンテナを利用してViewModelを注入する(BViewModel、CViewModel→AViewModel)
AViewModelにBViewModelとCViewModelのインスタンスを注入。
AViewModelのプロパティ変更されたタイミングでBViewModelとCViewModelのプロパティを変更。
###方法③
DIコンテナを使用してViewModel注入する(AViewModel→BViewModel、CViewModel)
BViewModelとCViewModelにAViewModelのインスタンスを注入。
AViewModelのプロパティの変更監視してBViewModelとCViewModelのプロパティを変更。
###ViewModel同士を互いに操作させてはダメ?
MVVMのModelにまつわる誤解
このサイトではViewModel同士にお互いを操作することは好ましくない旨が書かれています。
今回のようなViewModel同士を連携させることに若干違和感を覚え、なんとなくもやもやしています。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/08 02:17 編集
2017/08/08 01:25