wpf 代码获取contextmenu_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)并做出相应的反应

标签:c,wpf,shortcut,menu

来源: https://codeday.me/bug/20190704/1375573.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值