Связывание клавиш в WPF - PullRequest
       21

Связывание клавиш в WPF

4 голосов
/ 15 февраля 2010

Я новичок в WPF, и в создаваемом приложении я бы хотел показывать главное меню при нажатии клавиши alt, как проводник Windows в Vista и Windows 7. Я пытался использовать связывание клавиш с просто набор модификаторов, но это не похоже на работу.

Здесь по коду:

<code><Window.CommandBindings>
    <CommandBinding Command="{x:Static local:MainWindow.ShowMenuCommand}"
                        CanExecute="ShowMenuCommand_CanExecute"
                        Executed="ShowMenuCommand_Executed"/>
</Window.CommandBindings>
<Window.InputBindings>
    <KeyBinding Key="Alt" Command="{x:Static local:MainWindow.ShowMenuCommand}" />
</Window.InputBindings>

Мне также хотелось бы, чтобы меню исчезало при потере фокуса.

Есть идеи?

Ответы [ 5 ]

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

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

Для тех, кто хочет знать, почему попытка @ jamier на этом KeyBinding не работает, ответ можно найти на странице KeyBinding Class в MSDN:

За исключением функциональных клавиш и клавиш цифровой клавиатуры, действительный KeyGesture должен содержать ровно одну клавишу и одну или несколько ModifierKeys.

Следовательно, один модификатор сам по себе не может использоваться как действительный Gesture в KeyBinding.

2 голосов
/ 07 июля 2010

Ответ, который я искал, можно найти здесь:

http://www.stackoverflow.com/questions/1218394/how-can-i-toggle-the-main-menu-visibility-using-the-alt-key-in-wpf

Спасибо всем за помощь.

1 голос
/ 15 февраля 2010

Вы пытались установить атрибут Key на "LeftAlt" или "RightAlt"? Атрибут Key имеет перечисление типа System.Windows.Input.Key, которое не имеет значения "Alt".

Alt используется как модификатор в KeyGesture, поэтому вы видите его отдельно в других местах. Однако в перечислении Key у него есть экземпляры для левой и правой клавиш Alt.

Скорее всего, вам понадобятся две привязки, по одной для каждой клавиши Alt.

0 голосов
/ 18 июня 2012

Попробуйте установить Modifiers="Alt" и Key="LeftAlt":

<KeyBinding Key="LeftAlt" Modifiers="Alt" Command="{x:Static local:MainWindow.ShowMenuCommand}" /> 
0 голосов
/ 16 февраля 2010

Попробуйте установить IsMainMenu="True" на вашем Menu контроле. Это дает вам поведение, которое вы ищете?

...