2

Xamlで子ビューを定義する親ビューがあります。子ビューにはDependencyProperty、親ビューのViewModelにバインドされたがあります。ただし、その値は子ビューのViewModelでも必要です。

<custom:Parent>
  <custom:Child ChildId="{Binding ParentFooId}" ... />
</custom:Parent>

ChildIdコントロールの依存関係プロパティとして実装されますChildViewChildViewModel必要な場合、ParentFooIdそれを取得するための適切なMVVMの方法は何ですか?

のをにキャストしてDataContext、のハンドラに値を設定したくありません。それは私にはあまりMVVMっぽくないようです。ChildViewChildViewModelOnChildIdChangedChildView

私が考えたもう1つの方法はChildViewModel、値を使用して新しいものを作成し、それをイベント内(内)として設定することDataContextでしOnParentFooIdChangedParentViewModel。しかし、ViewModelsはビューを認識しないはずであるため(したがって、sについて何も知らないため)、それも完全には正しくないようですDataContext

明らかな何かが欠けているようです...

4

2 に答える 2

3

質問を正しく理解している場合は、親ビューモデル内に子ビューモデルを作成し、親ビューモデルへの参照を渡して保持する必要があります。このようにして、子ビューモデルから親ビューモデルの任意のプロパティを参照し、子ビューのいずれかにバインドできます。

于 2009-11-05T23:14:32.213 に答える
0

依存関係プロパティからビューモデルにデータを渡そうとしているだけの場合は、PropertyChangedCallbackイベントを使用します。変更されたデータをビューモデルに送信するハンドラーを追加します。しかし、私はあなたの意図を誤解しているかもしれません。

于 2009-11-05T14:19:06.827 に答える