加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:26:46 所属栏目:百科 来源:网络整理
导读:我已经有以下内容: 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.Item
我已经有以下内容:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读