詳細ビュー間で共有される依存関係プロパティを実装するには、次の2つの方法が考えられます。
- それらをマスタービューモデルに保存し、作成時に詳細ビューモデルにデータバインディングを追加し、詳細ビューでそれらにバインドします。
- それらをビューモデルにまったく保存せず、代わりにFindAncestorを使用してマスタービューのプロパティに直接バインドします。
それぞれの長所と短所は何ですか、そして他の/より良いオプションはありますか?
編集:
明確にするために、DataContextにマスタービューモデルを使用するカスタムコントロール(Controlから派生)があります。カスタムコントロールのコントロールテンプレートには、マスタービューモデルの依存関係プロパティにバインドされたItemsSourceを持つItemsControlが含まれています。この依存関係プロパティは、詳細ビューモデルオブジェクトのObservableCollectionです。ItemsControlのアイテムテンプレートは、詳細ビューモデルのプロパティにバインドされます。必要なのは、カスタムコントロールのコントロールテンプレート(マスタービュー)とItemsControl内のすべてのアイテムのアイテムテンプレートによって共有される単一のプロパティです。カスタムコントロールには、値を設定するためのスライダーなどが含まれ、アイテムテンプレートはそれを読み取るだけです。
規約を乱用している場合は申し訳ありませんが、MVVMのコツをつかもうとしています。それでも問題が不明な場合は、簡単なテストケースのコードを書いてみてください。