我有以下用户控件:
这个自定义TabItem定义了一个DependencyProperty
'ShortLabel'来实现一个接口.我想结合这一点,从内的其他性质TabItem
的DataTemplate
.但由于奇怪的相互作用,在TextBlock
内部DataTemplate
被绑定到父容器的TabItem
,这也被称为"自我",但在另一个XAML文件中定义.
为什么Binding在TabItem.Header中工作,而不是在TabItem.ContentTemplate中工作,我应该如何从DataTemplate中获取用户控件的属性?
TemplateBinding
:尝试绑定到内容的内容中的ContentPresenter TabItem
.
FindAncestor, AncestorType={x:Type TabItem}
:找不到TabItem
父母.当我指定MyTabItem
类型时,这也不起作用.
ElementName=Self
:尝试绑定到具有该名称的控件在错误的范围内(父容器,而不是TabItem
).我认为这给出了一个提示,为什么这不起作用:DataTemplate不是在XAML中定义的位置创建的,但显然是由父容器创建的.
我假设我可以替换整体ControlTemplate
来实现我正在寻找的效果,但由于我想保留默认的外观和感觉TabItem
而不必保持整体ControlTemplate
,我非常不愿意这样做.
同时我发现问题是:如果包含s ,则TabControl
s不能包含(任何)ItemsTemplate
(包括DisplayMemberPath
).MSDN论坛上有一个解释原因的帖子.ItemsSource
Visual
由于这似乎是WPF的TabControl的一个基本问题,我正在关闭这个问题.感谢你的帮助!