微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何以编程方式向WPF ContextMenu添加访问密钥(快捷方式)?

我已经有以下内容

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)并做出相应的反应

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐