1

詳細ビュー間で共有される依存関係プロパティを実装するには、次の2つの方法が考えられます。

  1. それらをマスタービューモデルに保存し、作成時に詳細ビューモデルにデータバインディングを追加し、詳細ビューでそれらにバインドします。
  2. それらをビューモデルにまったく保存せず、代わりにFindAncestorを使用してマスタービューのプロパティに直接バインドします。

それぞれの長所と短所は何ですか、そして他の/より良いオプションはありますか?

編集:

明確にするために、DataContextにマスタービューモデルを使用するカスタムコントロール(Controlから派生)があります。カスタムコントロールのコントロールテンプレートには、マスタービューモデルの依存関係プロパティにバインドされたItemsSourceを持つItemsControlが含まれています。この依存関係プロパティは、詳細ビューモデルオブジェクトのObservableCollectionです。ItemsControlのアイテムテンプレートは、詳細ビューモデルのプロパティにバインドされます。必要なのは、カスタムコントロールのコントロールテンプレート(マスタービュー)とItemsControl内のすべてのアイテムのアイテムテンプレートによって共有される単一のプロパティです。カスタムコントロールには、値を設定するためのスライダーなどが含まれ、アイテムテンプレートはそれを読み取るだけです。

規約を乱用している場合は申し訳ありませんが、MVVMのコツをつかもうとしています。それでも問題が不明な場合は、簡単なテストケースのコードを書いてみてください。

4

1 に答える 1

0

ビューのコード ビハインドで依存関係プロパティを実装することは、私が見た中で最も一般的な方法です。これにより、ViewModel へのデータバインディングを介して DP と対話できます。実際には短所はありません.DPは、データバインディングを実装する必要があるオブジェクトの1つになることを意図しています。

上記があなたの求めているものでない場合は、簡単なコード例を含めてください。

于 2010-05-23T13:11:14.883 に答える