1
如何从嵌套数据模板(项目数据模板中的控件的数据模板)中绑定到ItemsControl中的Item的DataContext?我不能使用TemplatedParent
,因为它是双模板的。 而我不知道如何使用FindAncestor,AncestorType
,因为我不知道每个项目的类型是什么。绑定到ItemsControl中的Item的DataContext
有什么想法?
如何从嵌套数据模板(项目数据模板中的控件的数据模板)中绑定到ItemsControl中的Item的DataContext?我不能使用TemplatedParent
,因为它是双模板的。 而我不知道如何使用FindAncestor,AncestorType
,因为我不知道每个项目的类型是什么。绑定到ItemsControl中的Item的DataContext
有什么想法?
如果我正确地读这篇文章,您有:
- ItemsControl
|- ItemTemplate Item.DataContext<--|
|- Button |
|- ContentTemplate <-- Bind something in this to|
如果是这样的话,你要寻找的是ContentPresenter
。这是ItemsControl
生成的容器类型。问题是你将有多个ContentPresenter
祖先。您可以使用RelativeSource
的AncestorLevel
属性来处理此问题。
所以,在我的例子中,Button
的DataTemplate
可以通过访问该行的DataContext
:
<DataTemplate>
<TextBlock Text="{Binding DataContext.Name, RelativeSource={RelativeSource AncestorType={x:Type ContentPresenter}, AncestorLevel=2}}" />
</DataTemplate>
ContentPresenter!这就是我一直在寻找的。谢谢! –
终于在搜索3小时后找到它!这应该有更多的选票可见顶部。谢谢。 – Val