我有一个使用cefSharp和一些KeyGestures打开某些表单的应用程序。我们最初使用WPF ChromiumWebBrowser,但需要使用不支持的触摸滚动。因此,我们将控件更改为WindowsFormHost中的WinForms ChromiumWebBrowser。
切换后,绑定到RoutedCommands的KeyGestures不再触发。
在审核了here,here和here后,我尝试了几种不同的解决方案,但无济于事。
如上所述,当窗口被停用时,然后激活KeyGestures被适当地路由(正如所讨论的关于断点'导致'命令工作)。
我已经尝试在定时器上使用CommandManager.InvalidateRequerySuggested方法,或者在将焦点转移到窗口后,在将forcus转移到另一个WPF控件之后以及在关注WindowsFormsHosts之后被加载时调用。
我的命令声明如下:
RoutedCommand ShowAdmin = new RoutedCommand();
ShowAdmin.InputGestures.Add(new KeyGesture(Key.F1, ModifierKeys.Shift | ModifierKeys.Alt | ModifierKeys.Control));
CommandBindings.Add(new CommandBinding(ShowAdmin, ShowAdminForm));
我基本上有两个问题:
1)为什么我没有收到命令。是因为WinForms控件不会“冒泡”按键事件吗?
2)如果不打开另一个窗口,只能再次关闭它,我该怎么做才能捕获keygesture
提前感谢您的问题,意见和解答!
答案 0 :(得分:0)
如果您实施IKeyboardHandler
,您应该处理自定义按键组合,这可能是您最简单,最干净的解决方案。
https://github.com/cefsharp/CefSharp/blob/master/CefSharp/IKeyboardHandler.cs