我有一个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。
答案 0 :(得分:0)
您的问题是您没有考虑内置行为。
如果您这样使菜单项可检查。
会发生什么?
它就像一个复选框。
单击复选框会发生什么?
如果您注释掉代码,则可以:
try {
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(authority + tenant + "/", true,
service);
Future<AuthenticationResult> future = context
.acquireTokenByRefreshToken(refreshToken, new ClientCredential(clientId, clientSecret), null, null);
result = future.get();
} catch (ExecutionException e) {
throw e.getCause();
} finally {
service.shutdown();
}
单击时,菜单项会出现一个勾号,并且被选中为true。 再次单击它,它将变为false。
不设置Ischecked。