wpf - TabControl:所有 TabItem 已折叠,但第一个 TabItem 的内容仍然可见

标签 wpf visibility tabcontrol tabitem

我在 TabControl 上有一个相当奇怪的行为,它的 TabItems 都折叠了:第一个 TabItem 的内容仍然可见(但标题不是)。

TabControl 及其 TabItems 设置如下:

<TabControl>
    <TabItem Header="Data 1"
             Visibility="{Binding Path=DataTable1.HasRows, 
                                  Converter={StaticResource BoolToVisibility}}">
        <UI:ShowData DataContext="{Binding Path=DataTable1}"/>
    </TabItem>
    <TabItem Header="Data 2"
             Visibility="{Binding Path=DataTable2.HasRows, 
                                  Converter={StaticResource BoolToVisibility}}">
        <UI:ShowData DataContext="{Binding Path=DataTable2}"/>
    </TabItem>
</TabControl>

如果没有数据表包含任何行,则不应显示任何 TabItem。 (我知道在这种情况下我可以隐藏整个 TabControl,但这不是重点。)

实际上,尽管 TabItem 已折叠,但仍会显示选项卡项“Header 1”的内容! TabItem 的标题本身被折叠,显示包含其内容的 TabItems 边框和内容本身。

编辑/添加:
这可以使用此代码轻松重现(注意使用 Collapsed 或 Hidden 没有任何区别:
<TabControl>
    <TabItem Header="Test 1" Visibility="Hidden">
        <Label>Test1</Label>
    </TabItem>

    <TabItem Header="Test 2" Visibility="Hidden">
        <Label>Test2</Label>
    </TabItem>
</TabControl>

那么这里有什么问题呢?任何帮助/提示表示赞赏!

最佳答案

好的,所以你在这里发现了一个真正的问题......我在网上环顾四周,发现了几篇与此相关的帖子。有人说这是一个错误,而另一些人说这是设计的行为。不知道是哪个,尽管它似乎更像是一个错误而不是一个功能。

无论哪种方式,您都想知道如何处理问题。 .. 有几种解决方案。一种是设置TabItem.Contentnull每当您想隐藏选项卡时,另一个是添加一个空的 TabItem并在隐藏之前选择该项目(以便显示空内容)。

您可以将处理程序附加到 TabItem.IsVisibleChanged Event通知时Visibility属性已更改:

public void TabItemIsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
    // Hide TabItem.Content here
}

以下是相关帖子的一些链接:

Bug in TabControl/TabItem`s content visibility?
WPF TabControl - Select different tab when TabItem Visibility changes
Is there a workaround for this tabcontrol/tabitem bug

关于wpf - TabControl:所有 TabItem 已折叠,但第一个 TabItem 的内容仍然可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21164098/

相关文章:

c# - 将资源字典文件动态加载到 wpf 应用程序会出错

wpf - 是否可以在 WPF/Touch 应用程序中弹出一个忽略 MenuDropAlignment 的弹出窗口?

javascript - 检查某个元素是否在实际页面上

wpf - tabControl 中的多个 userControl 实例

wpf - 电子节目指南 (EPG) XAML

wpf - 什么是WPF浏览器应用类型项目?

c# - 检测是否显示工具提示?

c++ - 什么时候公共(public)/私有(private)的排序不是一种风格选择?

C# TabControl - 是否可以将 "disable"设置为单个 TabPages?

带有溢出图标的 WPF TabControl