RelativeSource绑定不起作用

时间:2018-05-28 15:14:47

标签: wpf

下面的第一个文本框找不到父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的绑定。

1 个答案:

答案 0 :(得分:1)

TabItem不是TextBlock内容面板中TabControl的视觉祖先,因此您的第一个绑定将无法正常工作。< / p>

如果您将TextBlock放在TabItem标题中,则可以使用{RelativeSource}绑定后者。但是,当前可见的内容面板是TabContol本身的视觉子,而不是特定的TabItem