【发布时间】:2015-06-11 01:59:13
【问题描述】:
我有一个使用 cefSharp 和一些 KeyGestures 来打开一些表单的应用程序。我们最初使用 WPF ChromiumWebBrowser,但需要使用不支持的触摸滚动。因此,我们将控件更改为 WindowsFormHost 内的 WinForms ChromiumWebBrowser。
切换后,绑定到我们的 RoutedCommands 的 KeyGestures 不再触发。
在查看了here、here 和here 之后,我尝试了几种不同的解决方案,但都无济于事。
如上所述,当窗口被停用时,然后激活 KeyGestures 被适当地路由(如关于断点“导致”命令工作的讨论)。
我尝试在计时器上使用 CommandManager.InvalidateRequerySuggested 方法,或者在加载时调用,在将焦点转移到窗口之后,在将焦点转移到另一个 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) 我可以做些什么来捕获键手势而不求助于打开另一个窗口,只是再次关闭它
提前感谢您的问题、cmets 和答案!
【问题讨论】:
标签: c# .net wpf winforms cefsharp