MenuItem со свойством IsCheckable всегда возвращает True для IsChecked - PullRequest
0 голосов
/ 01 марта 2019

У меня есть MenuItem, где я устанавливаю IsCheckable = True, и метод, который запускает событие Click, которое проверяет или снимает флажок MenuItem.

<MenuItem x:Name="DebugWindowMenuItem" Header="Debug Window" IsCheckable="True" IsChecked="False" Click="DebugWindow_Click" />

Тогда мой код C # выглядит следующим образом ...

private void DebugWindow_Click(object sender, RoutedEventArgs e) {
    Console.WriteLine(DebugWindowMenuItem.IsChecked);

    if (DebugWindowMenuItem.IsChecked == true) {
        DebugWindow.Visibility = Visibility.Collapsed;
        DebugWindowMenuItem.IsChecked = false;
    } else {
        DebugWindow.Visibility = Visibility.Visible;
        DebugWindowMenuItem.IsChecked = true;
    }
}

Я явно что-то упускаю, потому что XAML заявляет, что это не проверено, но вывод консоли говорит, что каждый раз, когда я нажимаю DebugWindowMenuItem.

Есть ли другой параметр, который я пропускаю?

ОБНОВЛЕНИЕ: По сути, не устанавливайте IsChecked.Рассматривайте проверяемый элемент MenuItem как CheckBox.

1 Ответ

0 голосов
/ 01 марта 2019

Ваша проблема в том, что вы не задумывались о встроенном поведении.

Если вы сделаете так, чтобы пункт меню проверялся таким образом.

Что происходит?

Это действует какфлажок.

Что происходит, когда вы нажимаете флажок?

Если вы закомментируете свой код, у вас есть:

    private void DebugWindow_Click(object sender, RoutedEventArgs e)
    {
        Console.WriteLine(DebugWindowMenuItem.IsChecked);
    }

Когда вы щелкаете по нему, пункт менюпоявляется галочка и проверяется становится правдой.Нажмите его еще раз, и он станет ложным.

Не устанавливать Ischecked.

...