Как вы создаете горячие клавиши для кнопок панели инструментов в WPF?

В WPF вы можете сделать кнопку следующим образом:

<Button Name="Foo" Content="_Foo" />

Подчеркивание перед «F» связывает клавишу F с кнопкой Foo (и добавляет подчеркивание под «F» в «Foo»).

Однако на панели инструментов:

<ToolBar>
    <Button Name="Foo" Content="_Foo" />
</ToolBar>

Это просто создает кнопку с текстом «_Foo», и с ней не связана горячая клавиша.

Есть ли встроенный способ создать горячую клавишу для кнопки панели инструментов?


person Matt    schedule 11.07.2012    source источник
comment
Взгляните на первый ответ здесь: stackoverflow.com/questions/1361350 /горячие клавиши-в-wpf   -  person Zak    schedule 11.07.2012


Ответы (3)


Стиль панели инструментов для кнопок отключает нормальное поведение, но вы можете вернуть его обратно, явно указав AccessText в качестве содержимого кнопки:

<ToolBar>
    <Button Name="Foo">
        <AccessText>_Foo</AccessText>
    </Button>
</ToolBar>
person John Bowen    schedule 11.07.2012

Используйте InputBindings в окне, содержащем панель инструментов. В частности, вы создадите несколько KeyBindings вот так :

<Window.InputBindings>
    <KeyBinding Modifiers="Control" Key="S" Command="{Binding SaveCommand}"/>
</Window.InputBindings>

Это требует использования привязки к ICommand (вы используете MVVM, верно?), и, помещая его в окно, вы гарантируете, что ярлык является «глобальным», иначе вам придется беспокоиться о том, что имеет фокус клавиатуры . На панели инструментов вы обычно указываете ярлык с помощью всплывающей подсказки:

<ToolBar>
    <Button ToolTip="Save (Ctrl+S)" Command="{Binding SaveCommand}">
</ToolBar>
person Sean Hanley    schedule 11.07.2012
comment
Я искал способ создать горячую клавишу, а не привязку клавиш. - person Matt; 11.07.2012
comment
Может быть, вам следует расширить свой вопрос, чтобы точно указать, что вы подразумеваете под горячей клавишей? - person Sean Hanley; 11.07.2012
comment
Если вы хотите узнать, что такое горячая клавиша, откройте какую-нибудь базовую программу Windows (хорошим примером является калькулятор). Затем нажмите АЛТ. Вы заметите, что фокус переключился на строку меню, а одна буква в каждом пункте меню подчеркнута. Нажатие подчеркнутого символа позволяет перейти прямо к этому элементу меню. Если вы откроете меню, вы заметите, что элементы там также имеют подчеркнутые буквы. Эти подчеркнутые буквы называются горячими клавишами, а не сочетаниями клавиш. Вы можете заметить, что некоторые пункты меню дополнительно привязаны к сочетанию клавиш. - person Matt; 11.07.2012

Кажется, вы пытаетесь заставить элемент управления Toolbar делать то, что он не должен делать - для свойства Focusable установлено значение False, поэтому он не получает ввод с клавиатуры, поэтому ни одна кнопка никогда не будет активирована с помощью клавиатуры. Вы хотите, чтобы действие было доступно с помощью элемента меню, кнопки на панели инструментов или клавиатуры — выберите Commands и InputBindings, как было предложено ранее.

person Alex Seleznyov    schedule 14.01.2016