Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 取消选中关联菜单中的项目_C#_Contextmenu_Menuitem_Trayicon - Fatal编程技术网

C# 取消选中关联菜单中的项目

C# 取消选中关联菜单中的项目,c#,contextmenu,menuitem,trayicon,C#,Contextmenu,Menuitem,Trayicon,我目前在C#WPF中有一个上下文菜单,显示一个菜单项。然后TrayIcon使用此上下文菜单 // menu initialization private static System.Windows.Controls.ContextMenu trayMenu = new System.Windows.Controls.ContextMenu(); // menu item initialization private static System.Windows.Controls.MenuItem

我目前在C#WPF中有一个上下文菜单,显示一个菜单项。然后TrayIcon使用此上下文菜单

// menu initialization
private static System.Windows.Controls.ContextMenu trayMenu = new System.Windows.Controls.ContextMenu();

// menu item initialization
private static System.Windows.Controls.MenuItem displayOnScreenControls = new System.Windows.Controls.MenuItem();
displayOnScreenControls.Header = "Display presenter controls";
displayOnScreenControls.IsCheckable = true;
displayOnScreenControls.Checked += new RoutedEventHandler(displayOnScreenControls_Checked);
displayOnScreenControls.Unchecked += new RoutedEventHandler(displayOnScreenControls_Unchecked);

// add icons to the tray menu
trayMenu.Items.Add(displayOnScreenControls);
“displayOnScreenControls”项是可检查的。当用户选中此选项并且满足某些条件时,将出现一个控制窗口

如果用户选择关闭此窗口,则表示他们不再希望控制窗口打开。为了保持一致性,我需要取消选中“displayOnScreenControls”菜单项——否则该项将被选中,但窗口将不会打开(如果用户想要重新打开窗口,这将使用户感到困惑,等等)

你知道怎么处理吗?我需要基本上取消选中菜单项。我可以解构菜单并重建它,但那似乎是浪费时间


一如既往,提前感谢您的帮助。

那么您只想在窗口关闭时以编程方式取消选中菜单项?你所需要做的就是设定


把它放在事件处理程序中,应该会很好。

我误解了ContextMenu.Items.Add()函数的工作原理。出于某种原因,我认为它实际上会创建MenuItem的副本,而不是引用现有对象。
displayOnScreenControls.IsChecked = false;