WPF: компонент мешает с горячими клавишами - PullRequest
0 голосов
/ 14 января 2011

Я встроил Acrobat Reader в свое приложение WPF, и я определил несколько горячих клавиш, с которыми я хочу поработать, но горячие клавиши работают только тогда, когда я нахожусь внутри текстовых полей и тому подобное.Я обнаружил, что это должно быть потому, что Adobe Acrobat Reader получает горячие клавиши раньше меня, потому что, если я сопоставляю ctrl-shift-s с функцией, когда я нажимаю ее внутри текстового поля, вызывается моя функция, но если фокус не находится втекстовое поле, вызывается функция сохранения Adobe.

Как я могу убедиться, что мои горячие клавиши, определенные для MainWindow, выполнены, а не Acrobat Reader или что-то еще?

Cheers

Ник

1 Ответ

1 голос
/ 14 января 2011

Похоже, что фокус клавиатуры в вашем приложении по умолчанию встроен в Acrobat Reader, поэтому, когда ваше главное окно получает нажатие клавиши, оно отдает их Reader в предпочтении всего остального, включая собственные команды меню.

Это несколько сложно, поскольку вы, вероятно, хотите, чтобы Reader получил фокус и обрабатывал сочетания клавиш - только не те, которые также определены вашим главным окном.

Попробуйте переопределить OnKeyDown в вашем классе MainWindowи посмотреть, если Ctrl + Shift + S прибывает туда.Если это так, ответьте прямым вызовом соответствующего обработчика события команды и установите для параметра Handled значение true в аргументе события, чтобы MainWindow не отправлял этот ключ куда-либо еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...