好的,我不确定我是否理解这应该如何工作,但在我的应用程序中,我已将按键手势 (Ctrl+K) 绑定到 RoutedCommand。无论我在我的应用程序中关注的哪个位置,组合键都有效,除非我在包含 Web 浏览器控件的 WindowsFormsHost 中使用它。我尝试为 Web 浏览器控件捕获 PreviewKeyDown 事件并将 IsInputKey 设置为 false。理论上,这应该会导致主机认为未处理的关键手势并将其向上发送,但这不会发生。
更新:
如果我覆盖控件的 bool IsInputKey (Keys keyData) 并返回 false,它会起作用并且命令会按应有的方式执行。
也许我处理 PreviewKeyDown 的方式有问题?
private void browser_PreviewKeyDown (object sender, PreviewKeyDownEventArgs e)
{
e.IsInputKey = false;
}
我希望这可以让我从主窗口捕获任何组合键。我宁愿通过事件处理来解决这个问题,而不是扩展控件......