我正在尝试使用 TabControl 进行一些操作并且对此感到困惑

<TabControl Name="MainControl">
    <TabItem Header="MyTab1">
    <TextBlock Text="{Binding  Path=SelectedItem.Header, RelativeSource={RelativeSource FindAncestor, AncestorType=TabControl}}"/>
    </TabItem>
    <TabItem Header="Modules" ContentTemplate="{StaticResource tabItemControl}"/>
</TabControl>

这按预期工作。

然而这个:
<TabControl Name="MainControl">
    <TabItem Header="MyTab1">
    <TextBlock Text="{Binding  Path=Header, RelativeSource={RelativeSource FindAncestor, AncestorType=TabItem}}"/>
    </TabItem>
    <TabItem Header="Modules" ContentTemplate="{StaticResource tabItemControl}"/>
</TabControl>

才不是。

知道为什么吗?

selectedItem 不是 TabItem 吗?层次结构有什么不同吗?

最佳答案

如帖子 RelativeSource in DataTemplate works with TabControl but not with TabItem 中所示,TabItem 和 SelectedContent 托管在不同的面板中,因此 SelectedItem.Header 不起作用,因为它实际上不是 tabItem

发布下面之前帖子中的窥探图片

关于c# - TabControl.SelectedItem 不是 TabItem?相对源绑定(bind)失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15293434/

10-13 06:27