0
我目前在C#WPF中有一个ContextMenu,它显示一个MenuItem。这个ContextMenu然后被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的副本 - 不会引用现有的对象。 – BSchlinker 2011-05-09 05:33:22