使用一个变量来设置TabItem的可见性

本文关键字:设置 TabItem 可见性 变量 一个 | 更新日期: 2023-09-27 18:12:29

在WPF中如何通过使用样式显示/隐藏TabItem取决于Int变量的值?

风格尝试

<Style x:Key="TabItemStyleVisibility"
       TargetType="{x:Type TabItem}"
       BasedOn="{StaticResource {x:Type TabItem}}">            
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=TabItemIndex, 
                                           Mode=OneWay,
                                           UpdateSourceTrigger=PropertyChanged}" 
                         Value="1">
                <Setter Property="Visibility" Value="Visible"></Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style>

TabItem Xaml :

<TabItem Name="Tab1" Style="{StaticResource TabItemStyleVisibility}">
<<p> 交替尝试/strong>

可能是每个标签的样式(复制/粘贴),每次更改值:

<DataTrigger Binding="{Binding Path=TabItemIndex, 
                               Mode=OneWay, 
                               UpdateSourceTrigger=PropertyChanged}"                
             Value="1">
</DataTrigger>

但是它不会是干净的(每个TabItem一个样式)。

是否有一种方法来定义tabItem的可见性取决于tabItem的名称或依赖于一个int,并有相同的样式为每个tabItem ?

使用一个变量来设置TabItem的可见性

您可以使用转换器来做到这一点,这里有一个关于如何做到这一点的示例(未经测试)

class MyConverter : IValueConverter //Implement this one
{
    public object Convert(object state....)
    {
        string name = (string)state;
        if(name == "something") 
          return Visiblity.Visible;
        else return Visibilty.Hidden;
    }
}
<Grid.Resources>
    <myConverterNamespace:MyConverter x:Key = "myConverter"/>
</Grid.Resource>
    <TabItem Name="Tab1" Style="{StaticResource TabItemStyleVisibility}" 
Visbility={Binding ElementName="someTabItemName" Path="Name" Converter={StaticResource myConverter}}>

我知道我做错了什么,我试图工作的可见性,我所要做的就是工作在SelectedIndex