BooleanToVisibilityConverter, чтобы свернуть / показать TabItem - PullRequest
0 голосов
/ 15 ноября 2018

В 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 голосов
/ 15 ноября 2018

Если Appdata является открытым свойством в MainWindow, измените привязку на:

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

Затем вы можете удалить MainWindow.DebugTabState.

В качестве альтернативы, в MainWindow советовать INotifyPropertyChange из AppData и вызывать событие PropertyChanged, если EnableDebuggingCheckBox изменился

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...