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.

因此,在我的示例中,DataTemplateButton可以通过以下方式访问DataContext行的 :

<DataTemplate>
    <TextBlock Text="{Binding DataContext.Name, RelativeSource={RelativeSource AncestorType={x:Type ContentPresenter}, AncestorLevel=2}}" />
</DataTemplate>
于 2013-07-09T19:25:28.513 回答