【发布时间】:2011-01-13 10:34:25
【问题描述】:
我计划在我的 WPF 应用程序中添加对许多键盘上的“后退”和“前进”按钮的支持,但我很难让它们正常工作。
我已经尝试使用标准的 KeyBinding 到 BrowserBack 和 BrowserForward,没有任何乐趣。我用 ESC 键测试了代码,以确保它正常工作,并且那个键没问题。
接下来我处理了 KeyUp 事件,但是发送的密钥是“System”,这是没用的,如果我使用 KeyInterop.VirtualKeyFromKey 我只会返回 0。
我开始认为 PInvoke/捕获真实窗口消息将是唯一的选择,但如果有人有任何好主意,我宁愿避免这样做?
哦,按键本身肯定可以工作,而且我的键盘已插入 ;-)
更新:他们建议使用 SystemKey 让我可以使用它:
new KeyBinding(TestCommand, new KeyGesture(Key.Left, ModifierKeys.Alt));
这似乎适用于键盘按钮,但不适用于相应的触摸“轻弹”(模拟下一个和后退)。这些轻弹在浏览器中运行良好,但根据我的 KeyUp 事件,它们发送的只是“LeftAlt”,仅此而已!
** 再次更新 ** : Rich 的评论让我明白了这一点:
this.CommandBindings.Add(new CommandBinding(NavigationCommands.BrowseBack, BrowseBack_Executed));
this.CommandBindings.Add(new CommandBinding(NavigationCommands.BrowseForward, BrowseForward_Executed));
这似乎是一种享受……也可以轻弹!
【问题讨论】:
-
让我知道您是如何在其他人的计算机上运行的。这有点可疑......我觉得这是一个错误
-
对不起,是的,我已经在几台机器上试过了,它们的行为似乎都一样。
标签: wpf keyboard back key-bindings next