在WPF中,您可以按如下方式创建一个按钮:
<Button Name="Foo" Content="_Foo" />
“F”前面的下划线将F
键与Foo
按钮相关联(并在“Foo”中的“F”下添加下划线)。
但是,在工具栏中:
<ToolBar>
<Button Name="Foo" Content="_Foo" />
</ToolBar>
这只是创建一个带有文本'_Foo'的按钮,并且没有与之关联的热键。
是否有任何内置方法可以为工具栏按钮创建热键?
答案 0 :(得分:3)
Buttons的ToolBar样式会关闭正常行为,但您可以通过将AccessText明确指定为Button的内容来强制它:
<ToolBar>
<Button Name="Foo">
<AccessText>_Foo</AccessText>
</Button>
</ToolBar>
答案 1 :(得分:2)
在包含工具栏的窗口上使用InputBindings
。具体来说,您将创建一些KeyBindings
,如下所示:
<Window.InputBindings>
<KeyBinding Modifiers="Control" Key="S" Command="{Binding SaveCommand}"/>
</Window.InputBindings>
它需要使用绑定到ICommand( 使用MVVM吗?)并将其放在Window上,确保快捷方式是“全局”,否则你必须担心什么有键盘焦点。在工具栏中,您通常会通过工具提示指示快捷方式:
<ToolBar>
<Button ToolTip="Save (Ctrl+S)" Command="{Binding SaveCommand}">
</ToolBar>
答案 2 :(得分:0)
您似乎试图让工具栏控件执行不应该执行的操作 - 它将Focusable属性设置为False,因此不会接收键盘输入,因此不会通过键盘激活任何按钮。 您希望通过菜单项,工具栏按钮或键盘提供操作 - 转到Commands和InputBindings,如前所述。