BooleanToVisibilityConverter折叠/显示一个TabItem

时间:2018-11-15 14:55:14

标签: c# wpf

MainWindow.xaml 中,我有以下内容...

<Window.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibility" />
</Window.Resources>

// Tab control

<TabItem x:Name="DebugTab" Header="Debug" Visibility="{Binding Path=DebugTabState, Converter={StaticResource ResourceKey=BooleanToVisibility}}">
    // Some content
</TabItem>

MainWindow.xaml.cs 中,我有以下内容...

public bool DebugTabState
{
    get
    {
        return AppData.EnableDebuggingCheckBox;
    }
}

DebugSettings.xaml 中,我有以下内容...

<CheckBox x:Name="EnableDebuggingCheckBox" Content="Enable Debugging" IsChecked="{Binding Path=EnableDebugging}" />

DebugSettings.xaml.cs 中,我具有以下内容...

public bool EnableDebugging
{
    get
    {
        return AppData.EnableDebuggingCheckBox;
    }
    set
    {
        AppData.EnableDebuggingCheckBox = value;
    }
}

最后,在 AppData.cs 中,我有以下内容...

private bool _enableDebuggingCheckBox;

public bool EnableDebuggingCheckBox
{
    get
    {
        return _enableDebuggingCheckBox;
    }
    set
    {
        _enableDebuggingCheckBox = value;
        OnPropertyChanged("EnableDebuggingCheckBox");
    }
}

选中和取消选中EnableDebuggingCheckBox会按预期将值更新为true或false,但是DebugTab不会隐藏或显示。我想念什么吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果Appdata是MainWindow中的公共属性,请将绑定更改为:

<TabItem x:Name="DebugTab" Header="Debug" Visibility="{Binding Path=AppData.EnableDebuggingCheckBox, Converter={StaticResource ResourceKey=BooleanToVisibility}}">
    // Some content
</TabItem>

然后可以删除MainWindow.DebugTabState。

或者,在MainWindow中,建议从AppData到INotifyPropertyChange并在EnableDebuggingCheckBox更改的情况下引发PropertyChanged事件