WPF RoutedUICommand: как разрешить "вводить" ключ, который зарегистрирован как ярлык?

Я использую CommandBinding в RoutedUICommand в моем приложении экстенсивно. У большинства из них есть сочетания клавиш, которые работают глобально.

Для некоторых команд я хотел бы иметь сочетания клавиш без модификаторов, например, клавиатуру "+" (Key.Add). Это все работает нормально, за исключением того, что при вводе текста управления (например, TextBox), глобальная команда по-прежнему имеет приоритет, использует ключ и не позволяет набирать его, выполняя команду вместо этого. Тем не менее, я хочу, чтобы при таких обстоятельствах вводился ключ, а сочетание клавиш было заблокировано.

Есть ли достаточно простой способ добиться этого?

1 ответ

В вашем делегате CanExecute позвоните Keyboard.FocusedElement свойство, вернуть false, если оно не равно нулю. Теоретически, это должно работать. Если это не работает, сделайте это в Execute делегат, проверьте это и установите e.Handled в false.

Другие вопросы по тегам