2


2

WPF:同じコントロール内の2つのDataContextsにアクセスする

私はMVVMアプローチを使用しており、ViewModelから「ListBox」を表示するための「DataTemplate」dである「DatabasesSubFrame」というオブジェクトがあります。 現在の SelectedItem`と DataTemplate`dである DatabasesSubFrame`オブジェクトのプロパティの両方にバインドする ListBox`の下に `Button`を表示したいと思います。

ListBox`で共有祖先に DataContext`を設定し、 `{Binding /}`を使用することで、現在選択されているアイテムを参照する方法を知っています。 この例では、共有先祖は `StackPanel`です。 そして、「DataContext」が明示的に設定されていない場合は、「{Binding SomeProperty}」を実行するだけで、「DatabasesSubFrame」オブジェクトのプロパティに簡単にバインドできます。 ただし、明示的に設定された「DataContext」内で「{Binding SomeProperty}」を実行すると、間違った「DataContext」を参照します。

ここで「オリジナル」の「DataContext」にアクセスするにはどうすればよいですか? RelativeSourcesとTemplatedParentsをいじくり回そうとしましたが、それらをどのように合わせるかわかりませんでした。


1 Answer


3


https://stackoverflow.com/questions/1442165/wpf-usercontrol-in-datatemplate-within-itemscontrol-how-to-bind-to-parent-of-it [この質問]はあなたが答えを見つけるのに役立つと思いますあなたに。 もう1つの方法は、ウィンドウの名前を「ルート」などに設定することです。 次に、次を使用して、ウィンドウの元のデータコンテキストを取得できます。

{Binding ElementName=Root, Path=DataContext.MyViewModelsProperty}