带有 IsCheckable 属性 的 MenuItem 总是为 IsChecked 返回 True

MenuItem with IsCheckable property is always returning True for IsChecked

我有一个 MenuItem,我在其中设置了 IsCheckable = True 和一个在检查或取消选中 MenuItem 的 Click 事件上触发的方法。

<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。

你的问题是你没有考虑内置行为。

如果您使菜单项像那样可检查。

会发生什么?

它就像一个复选框。

单击复选框时会发生什么?

如果您注释掉您的代码,那么您有:

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

当您点击它时,菜单项会出现一个勾号,并且 ischecked 变为 true。 再点一下就变成false了

不要设置 Ischecked。