1

ネストされたデータ テンプレート (アイテムのデータ テンプレート内のコントロールのデータ テンプレート) 内から ItemsControl 内のアイテムの DataContext にバインドするにはどうすればよいですか?

TemplatedParentは二重にテンプレート化されているため、使用できません。FindAncestor,AncestorTypeまた、各アイテムの種類がわからないので使い方がわかりません。

何か案が?

4

1 に答える 1

4

私がこれを正しく読んでいるなら、あなたは持っています:

- 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>
于 2013-07-09T19:25:28.513 に答える