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