Я использую CommandBinding
до RoutedUICommand
в своем приложении. Большинство из них имеют сочетания клавиш, которые работают во всем мире.WPF RoutedUICommand: как разрешить «вводить» ключ, который зарегистрирован как ярлык?
Для некоторых команд я хотел бы иметь однострочные ярлыки без модификаторов - например, клавиатуру «+» (Key.Add
). Все это прекрасно работает, за исключением того, что когда сфокусировано управление текстовым вводом (например, TextBox
), глобальная команда по-прежнему имеет приоритет, потребляет ключ и не позволяет его набирать, вместо этого выполняя команду. Тем не менее, я хочу, чтобы ключ был набран в таких обстоятельствах, а ярлык команды был заблокирован.
Есть ли достаточно простой способ достичь этого?
Нет, оба способа не работают. Клавиша потребляется, даже если «CanExecute» сигнализировал ложь или «Выполнено», что не обрабатывается. (Кроме того, 'Keyboard.FocusedElement' может быть законно установлен для многих других элементов, которые не нуждаются в обработке ключа, скажем,' RadioButton'). Обходной путь, который я нашел до сих пор, - связать рассматриваемую команду с соответствующей панелью или другим элементом ('TabItem' в моем случае), который не содержит редактируемых полей, а не всего окна или приложения. Это не универсальное решение, но может работать в большинстве практических случаев. – Zeus