Это по замыслу. Сочетания клавиш обрабатываются на уровне цикла сообщений, обнаруженные за до , когда сообщение Windows отправляется в окно с фокусом. Вот почему эти клавиши могут работать независимо от фокуса.
Проблема в том, что у вас нет цикла сообщений Winforms, качающего сообщения. Application.Run () реализован в вашей программе WPF, а не Winforms. Поэтому любой код в Winforms, который обрабатывает сообщения клавиатуры для реализации сочетаний клавиш, не будет работать.
Хорошего решения для этого нет, это принципиально проблема «не забеременеть». Этот код в Winforms сильно заблокирован, поскольку он позволяет обход CAS. Единственный обходной путь - это отображение производного класса Form, содержащего элементы управления Winforms, с его методом ShowDialog (). Этот метод прокачивает модальный цикл сообщений, Winforms, достаточно хороший, чтобы оживить код обработки сочетаний клавиш. Перестройте ваш подход, сначала преобразуя главные окна, затем диалоговые.