动态隐藏WPF TabItem

时间:2016-02-19 19:15:34

标签: wpf tabcontrol 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的可见性设置为隐藏,则该标签内的内容不会隐藏。

有没有办法将标题页及其内容隐藏在一起?

2 个答案:

答案 0 :(得分:1)

您可以通过将Visibility绑定到父控件来实现。如果您使用的是视图模型,则可以将可见性绑定到视图模型中的属性,并将该属性用于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>

答案 1 :(得分:1)

如果您为所选/有效标签设置VisibilityHidden,则您需要选择其他标签,例如

<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的内容。