質問

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

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

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

ChildView DataContext ChildViewModel にキャストし、 OnChildIdChanged ChildView のcode>ハンドラー。それは私にはあまりMVVMっぽくないようです。

私が考えた他の代替手段は、値を持つ新しい ChildViewModel を作成し、それを OnParentFooIdChanged イベントで DataContext として設定することでした( ParentViewModel );しかし、ViewModelsはViewに気付かないようになっている(したがって、 DataContext sについて何も知らない)ので、それはまったく正しくないようです。

明らかな何かを見逃しているようです...

役に立ちましたか?

解決

質問を正しく理解できれば、親ビューモデル内に子ビューモデルを作成し、親ビューモデルへの参照を渡し、保持するだけです。これにより、子ビューモデルから親ビューモデルのプロパティを参照し、子ビューのいずれかにバインドできます。

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top