动态隐藏WPF选项卡项

动态隐藏WPF选项卡项,wpf,tabcontrol,tabitem,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/exp

假设我有一个非常简单的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的可见性设置为hidden,则该选项卡内的内容不会隐藏


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

可以通过将可见性绑定到父控件来实现。如果使用的是视图模型,则可以将可见性绑定到视图模型中的特性,并将该特性同时用于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>
如果将选定/活动选项卡的可见性设置为“隐藏”,则需要选择其他选项卡,例如

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

我想同时隐藏这两个选项,如何?我没有什么可选择的。@hardywang然后在TabControl上设置可见性。没有任何选项卡的TabControl是一种非常奇怪的设计。我想用c代码隐藏,但不想隐藏。表2.isselected=true;表1.可见性=可见性.hidden;你知道shfsdjkfkhksh jkfhd sfjdklh sfjdkh fjdkh fdjhf有什么问题吗?我看这不管用。通过实现视图模型并绑定到视图模型中的属性,你可以省去很多麻烦。有了视图模型,WPF中的许多问题都得到了简化。我知道,我需要快速交付一些POC。在实际工作中,我将使用PRISM。相对源没有找到祖先类型,因为它正在查看祖先级别1,而没有找到TabItem。您可以使用Snoop之类的实用程序来检查绑定的状态。我真的不认为在这里使用FindAncestor是合适的,因为这是在模板中工作时通常会用到的东西。此外,如果你的UI发生任何变化,你几乎肯定会破坏绑定。