【发布时间】:2019-03-01 18:26:45
【问题描述】:
我有一个设置 IsCheckable = True 的 MenuItem 和一个触发 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。
【问题讨论】:
-
什么是
DebugWindowMenuItem? (在您回答这个问题之前,请在调试器中验证并仔细检查您认为 DebugWindowMenuItem 是什么真的是现实。)从您问题中的代码来看,不能 100% 确定 @ 987654324@ 实际上是带有“调试窗口”标题的 MenuItem。此外,如果您反复单击/调用 DebugWindow_Click 处理程序,值是否会更改/切换,或者即使反复调用 DebugWindow_Click 也会保持true? -
抱歉,我不小心在帖子中留下了名字。虽然它在我的代码中。每次单击该菜单项时都会调用该命令。代码被调用,但 IsChecked 状态始终返回 True。