Аналог ProcessCmdKey в WPF - PullRequest
       32

Аналог ProcessCmdKey в WPF

3 голосов
/ 25 мая 2011

Я новичок в WPF и в WinForms, чтобы добавлять горячие клавиши в форму, которую я обычно использовал ProcessCmdKey , что облегчало переопределение (добавление) функциональности, связанной с ключами (аналогично описанному способу ) здесь ). Есть ли простой способ назначить горячие клавиши в WPF? Я использую Команды с ключами, но иногда это не работает (я думаю, что некоторые другие элементы управления в окне реагируют на эти жесты и выполняют свою работу, так что моя команда не может отвечать на предопределенный жест ключа).

1 Ответ

5 голосов
/ 18 июня 2011

InputBindings ограничены тем элементом управления, которому они назначены, если вы назначите KeyBinding в Window.InputBindings, они будут запускаться по всему окну, если только один и тот же жест не будет отменен локально, будучи определенным где-то вниз по дереву.

Например, это:

<UserControl.InputBindings>
    <KeyBinding Gesture="CTRL+SHIFT+N"
                Command="{Binding BtnNewChild_Command}"
                CommandParameter="{Binding ElementName=view}" />
</UserControl.InputBindings>

не работает, он не может передать элемент view в качестве параметра, хотя в этом UserControl есть элемент управления с именем "view".Есть ли в wpf какой-нибудь "общий" сценарий назначения горячих клавиш?

Проблема здесь будет заключаться в том, что у дочерних элементов управления есть доступ к вещам, объявленным выше в дереве, но не наоборот.Вы можете реорганизовать это, чтобы создать ваше представление как ресурс в UserControl.Resources, тогда вы можете ссылаться на него как в CommandParameter, так и там, где вы используете его в UserControl.

...