WPF で画面とユーザーコントロールの連携を考えてみた

ちょっと某所で質疑があがってたので、MVVMパターンにおける画面とユーザーコントロールの連携について考えてみました。
お題をかいつまんで言えば、こんな話です。

メインウィンドウと二つのユーザーコントロールが存在し、それぞれプロジェクトを分けて管理したい。画面に各ユーザーコントロールを貼り付けてコントロール間で連携を取りたいが、コントロール同士がお互い参照しない様に実装したい。どうすればいいか?


ぱっと頭の中で浮かんだのが、メインウィンドウと二つのユーザーコントロール各々に ViewModel を設け、メインウィンドウの ViewMdeol に各コントロールの ViewModel を管理させればいいじゃんと。でも説明だけじゃイメージ湧かないかも知れないので、少しサンプルを考えてみました。ちなみに MVVMインフラは Livet を使います。


まずコントロール側の View と ViewModel。話を単純にするためコントロールの UI は TextBox だけにしてみます。まずユーザーコントロールA。「WPFユーザーコントロールライブラリ」で新規作成します。

続きを読む