gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:00:46 27 4
gpt4 key购买 nike

我在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com