我已经有以下内容:
var myContextMenu = new System.Windows.Controls.ContextMenu();
var exitItem = new MenuItem();
exitItem.Header = "E_xit";
exitItem.Item.Click += new RoutedEventHandler(new System.EventHandler(ExitProgram));
myContextMenu.Items.Add(exitItem);
这会导致我的上下文菜单显示Exit菜单项,带有带下划线的“x”.但是,按x不会做任何事情.单击菜单项工作正常.
如何将事件与x键关联?请注意,这必须在我的上下文中以编程方式完成.我不能在前面的XAML中编写这个解决方案.
最佳答案 添加快捷方式的常用方法如下:
var exitCommand = new RelayCommand(_ => ExitProgram());
var exitItem = new MenuItem();
exitItem.Header = "E_xit";
exitItem.Command = exitCommand;
myContextMenu.Items.Add(exitItem);
InputBindings.Add(new KeyBinding(exitCommand, new KeyGesture(Key.X, ModifierKeys.Alt));
RelayCommand
这里使用的类不是WPF的一部分,但它广泛用于基于MVVM的应用程序.
但请注意,您无法在没有修改器的情况下将快捷方式设置为X.
引自MSDN
In most cases, a KeyGesture must be associated with one or more
ModifierKeys. The exceptions to this rule are the function keys and
the numeric keypad keys, which can be a valid KeyGesture by
themselves. For example, you can create a KeyGesture by using only the
F12 key, but to use the X key in a KeyGesture it must be paired with a
modifier key.
如果由于某种原因你需要使用X w / o修饰符 – 你将不得不处理键盘事件(例如KeyDown)并做出相应的反应