ネストされたデータ テンプレート (アイテムのデータ テンプレート内のコントロールのデータ テンプレート) 内から 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>