动态隐藏 WPF TabItem
Dynamically hide a WPF TabItem
假设我有一个非常简单的 XAML
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication2"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<TabControl>
<TabItem Header="Tab 1" Visibility="Hidden">
<TextBlock>shfsdjkfhksh jkfhd sfjdklh sfjdkh fjdkh fdjhf </TextBlock>
</TabItem>
<TabItem Header="Tab 2" Visibility="Hidden">
<TextBlock>3807689vthvybhgthugbbjgkngoebt4uibn54</TextBlock>
</TabItem>
</TabControl>
</StackPanel>
</Window>
如果我只是将 TabItem
的可见性设置为隐藏,则该选项卡中的内容不会隐藏。
有没有办法将选项卡 header 及其内容一起隐藏?
您可以通过将可见性绑定到父控件来实现。如果您使用的是视图模型,则可以将可见性绑定到视图模型中的 属性,并对 TabItem 和 TextBlock 使用 属性。
<StackPanel>
<TabControl>
<TabItem x:Name="tab1" Header="Tab 1" Visibility="Hidden">
<TextBlock Visibility="{Binding Path=Visibility, ElementName=tab1}">shfsdjkfhksh jkfhd sfjdklh sfjdkh fjdkh fdjhf</TextBlock>
</TabItem>
</TabControl>
</StackPanel>
如果您将 selected/active 选项卡的 Visibility
设置为 Hidden
,您将需要 select 一个不同的选项卡,例如
<StackPanel>
<TabControl>
<TabItem x:Name="T1" Header="Tab 1" Visibility="Hidden" >
<TextBlock>1111111111111111111</TextBlock>
</TabItem>
<TabItem x:Name="T2" Header="Tab 2" IsSelected="True">
<TextBlock>22222222222222222222222</TextBlock>
</TabItem>
</TabControl>
</StackPanel>
您不需要隐藏 TabItem
的内容,前提是 TabItem
已隐藏且未select编辑。
假设我有一个非常简单的 XAML
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication2"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<TabControl>
<TabItem Header="Tab 1" Visibility="Hidden">
<TextBlock>shfsdjkfhksh jkfhd sfjdklh sfjdkh fjdkh fdjhf </TextBlock>
</TabItem>
<TabItem Header="Tab 2" Visibility="Hidden">
<TextBlock>3807689vthvybhgthugbbjgkngoebt4uibn54</TextBlock>
</TabItem>
</TabControl>
</StackPanel>
</Window>
如果我只是将 TabItem
的可见性设置为隐藏,则该选项卡中的内容不会隐藏。
有没有办法将选项卡 header 及其内容一起隐藏?
您可以通过将可见性绑定到父控件来实现。如果您使用的是视图模型,则可以将可见性绑定到视图模型中的 属性,并对 TabItem 和 TextBlock 使用 属性。
<StackPanel>
<TabControl>
<TabItem x:Name="tab1" Header="Tab 1" Visibility="Hidden">
<TextBlock Visibility="{Binding Path=Visibility, ElementName=tab1}">shfsdjkfhksh jkfhd sfjdklh sfjdkh fjdkh fdjhf</TextBlock>
</TabItem>
</TabControl>
</StackPanel>
如果您将 selected/active 选项卡的 Visibility
设置为 Hidden
,您将需要 select 一个不同的选项卡,例如
<StackPanel>
<TabControl>
<TabItem x:Name="T1" Header="Tab 1" Visibility="Hidden" >
<TextBlock>1111111111111111111</TextBlock>
</TabItem>
<TabItem x:Name="T2" Header="Tab 2" IsSelected="True">
<TextBlock>22222222222222222222222</TextBlock>
</TabItem>
</TabControl>
</StackPanel>
您不需要隐藏 TabItem
的内容,前提是 TabItem
已隐藏且未select编辑。