如何从嵌套数据模板(项目数据模板中控件的数据模板)内绑定到 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>