Связывание клавиш без модификаторов (в UserControl) - PullRequest
2 голосов
/ 11 февраля 2011

Я хочу выполнить команду при нажатии клавиши (без модификаторов). Итак, я попробовал ниже код:

<UserControl.InputBindings>
    <KeyBinding Key="A" Command="{Binding ACommand}" />
</UserControl.InputBindings>

но KeyBinding поддерживает не ключ, а ключ и модификатор.

Теперь я рассматриваю использование Поведения и обрабатываю событие KeyDown. Но это слишком сложно.

Кто-то знает более простое решение?

Добавить: Над кодом хорошо работает в Window .

Я нахожу решение в UserControl. (Использование .NET Framework 4)

Ответы [ 3 ]

2 голосов
/ 23 ноября 2013

Microsoft не поддерживает привязку к обычной клавише, которую вы можете нажимать при наборе текста в текстовом поле - если у нее нет модификатора. Вы можете связать функциональные клавиши (например, F1) и некоторые другие без модификатора. Смотри: http://msdn.microsoft.com/en-us/library/system.windows.input.keygesture(v=vs.110).aspx

Я наткнулся на блог, в котором говорится, что он смог обойти эту проблему, создав собственный класс KeyGesture, унаследовав его от InputGesture и реализовав функцию Matches. http://dikhi.wordpress.com/2008/06/27/keygesture-doesnt-work-with-alpha-numeric-key/

2 голосов
/ 11 февраля 2011

Я не совсем понимаю, в чем ваша проблема. Код, который вы написали , должен работать , нет необходимости указывать модификаторы.

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

0 голосов
/ 31 января 2015

Я нашел выход, чтобы установить InputBinding, используя только один ключ, такой как «Key.A»

boolean noMod = ModifierKeys == ModifierKeys.None;
KeyBinding inputBinding = new KeyBinding(this, Keys, noMod ? ModifierKeys.Alt : ModifierKeys));
if (noMod)
{
    inputBinding.ClearValue(KeyBinding.ModifiersProperty);
}

, который работал для меня хорошо.

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