ネストされたデータ テンプレート (アイテムのデータ テンプレート内のコントロールのデータ テンプレート) 内から ItemsControl 内のアイテムの DataContext にバインドするにはどうすればよいですか?
TemplatedParentは二重にテンプレート化されているため、使用できません。FindAncestor,AncestorTypeまた、各アイテムの種類がわからないので使い方がわかりません。
何か案が?
ネストされたデータ テンプレート (アイテムのデータ テンプレート内のコントロールのデータ テンプレート) 内から ItemsControl 内のアイテムの DataContext にバインドするにはどうすればよいですか?
TemplatedParentは二重にテンプレート化されているため、使用できません。FindAncestor,AncestorTypeまた、各アイテムの種類がわからないので使い方がわかりません。
何か案が?
私がこれを正しく読んでいるなら、あなたは持っています:
- ItemsControl
|- ItemTemplate Item.DataContext<--|
|- Button |
|- ContentTemplate <-- Bind something in this to|
その場合、探しているのは ですContentPresenter。それがItemsControl生成するコンテナのタイプです。問題は、複数のContentPresenter祖先を持つことです。AncestorLevelのプロパティでこれを処理できますRelativeSource。
したがって、私の例では、DataTemplateは次の方法で行の にButtonアクセスできます。DataContext
<DataTemplate>
<TextBlock Text="{Binding DataContext.Name, RelativeSource={RelativeSource AncestorType={x:Type ContentPresenter}, AncestorLevel=2}}" />
</DataTemplate>