У меня есть приложение, использующее cefSharp и некоторые KeyGestures для открытия некоторых форм. Первоначально мы использовали WPF ChromiumWebBrowser, но нам потребовалась сенсорная прокрутка, которая не поддерживается. В результате мы изменили элемент управления на WinForms ChromiumWebBrowser внутри WindowsFormHost.
После переключения KeyGestures, привязанные к нашим RoutedCommands, больше не срабатывают.
После просмотра здесь, здесь и здесь, я пробовал несколько разных решений, но безрезультатно.
Согласно вышеизложенному, когда окно деактивируется, затем активированные 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) Что я могу сделать, чтобы захватить жест клавиши, не открывая другое окно, только чтобы закрыть его снова
Заранее благодарим за вопросы, комментарии и ответы!