下面的第一个文本框找不到父TabItem,但第二个文本框可以找到。我在第一次绑定中做错了什么?
<TabItem Style="{StaticResource TabItemStyle}" x:Name="zzzzz">
<StackPanel >
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TabItem}}, Path=IsSelected}"></TextBlock>
<TextBlock Text="{Binding ElementName=zzzzz, Path=IsSelected}" />
</StackPanel>
</TabItem>
错误消息是:System.Windows.Data错误:4:无法找到与引用'RelativeSource FindAncestor绑定的源,AncestorType ='System.Windows.Controls.TabItem',AncestorLevel ='1''。 BindingExpression:路径= IsSelected;的DataItem = NULL; target元素是'TextBlock'(Name =''); target属性是'Text'(类型'String')
我从来没有设置AncestorLevel,但是我尝试将它设置为5000但它仍然不起作用。
请注意,我没有像this question中所示那样设置DataTemplate的绑定。
答案 0 :(得分:1)
TabItem
不是TextBlock
的内容面板中TabControl
的视觉祖先,因此您的第一个绑定将无法正常工作。< / p>
如果您将TextBlock
放在TabItem
的标题中,则可以使用{RelativeSource}
绑定后者。但是,当前可见的内容面板是TabContol
本身的视觉子,而不是特定的TabItem
。