如何为WPF中的工具栏按钮创建热键?

问题描述:

在WPF中,你可以做一个按钮,如下所示:如何为WPF中的工具栏按钮创建热键?

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

的“F”联营前下划线F键与Foo按钮(下在“富”的“F”加下划线) 。

然而,在工具栏中:

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

这只是创建与文本“_Foo”按钮,并没有热键与它关联。

是否有任何内置的方式来创建工具栏按钮的热键?

+0

看看第一个答案在这里:http://*.com/questions/1361350/keyboard-shortcuts-in-wpf – Zak 2012-07-11 12:56:16

的按钮工具栏风格关闭正常的行为,但你可以通过明确指定AccessText作为按钮的内容迫使它回到:

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

在包含工具栏的窗口上使用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> 
+0

我正在寻找一种方法来创建一个热键而不是一个键绑定。 – Matt 2012-07-11 13:02:46

+0

也许你应该扩大你的问题来明确你的意思是“热键”? – 2012-07-11 13:05:31

+1

如果您想知道热键是什么,请打开一些基本的Windows程序(计算器就是一个很好的例子)。然后按ALT。您会注意到焦点切换到菜单栏,每个菜单项中的一个字母带下划线。按下加下划线的字符会直接跳到该菜单元素。如果你打开一个菜单,你会注意到那里的元素也有下划线的字母。这些带下划线的字母被称为热键,而不是键盘快捷键。您可能会注意到一些菜单项还有一个键盘快捷键绑定。 – Matt 2012-07-11 13:13:51

您似乎试图让Toolbar控件做它不应该做的事 - 它将Focusable属性设置为False,因此没有接收到键盘输入,因此没有按钮会被键盘激活。 您希望通过菜单项,工具栏按钮或键盘提供操作 - 请参阅前面的建议,转到命令和输入绑定。