如何在WPF中为按钮指定快捷键?
谷歌搜索给了我答案,以便追加_而不是'&'在标准的Winforms中。
所以在完成以下操作后:
<Button Name="btnHelp" Content="_Help"></Button>
我没有发现'H'有下划线。
这是第一个问题。
第二个问题是,如何在运行时按Alt + H后执行该操作。如果只是为了示例而显示一个消息框就足够了。
我正在使用C#,WPF
感谢。
答案 0 :(得分:40)
这有点旧,但今天我遇到了同样的问题 我发现最简单的解决方案是只使用AccessText元素作为按钮的内容。
<Button Command="{Binding SomeCommand}">
<AccessText>_Help</AccessText>
</Button>
当您按 Alt 键时,按钮上的“H”将加下划线。
当您按下组合键 Alt + H 时,将执行绑定到该按钮的命令。
答案 1 :(得分:38)
使用自己的命令解决键绑定(+按钮绑定):
XAML文件的正文:
<Window.Resources>
<RoutedUICommand x:Key="MyCommand1" Text="Text" />
<RoutedUICommand x:Key="MyCommand2" Text="Another Text" />
</Window.Resources>
<Window.CommandBindings>
<CommandBinding Command="{StaticResource MyCommand1}"
Executed="FirstMethod" />
<CommandBinding Command="{StaticResource MyCommand2}"
Executed="SecondMethod" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Key="Z" Modifiers="Ctrl" Command="{StaticResource MyCommand1}" />
<KeyBinding Key="H" Modifiers="Alt" Command="{StaticResource MyCommand2}" />
</Window.InputBindings>
<Grid>
<Button x:Name="btn1" Command="{StaticResource MyCommand1}" Content="Click me" />
<Button x:Name="btn2" Command="{StaticResource MyCommand2}" Content="Click me" />
</Grid>
和.CS文件:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
public void FirstMethod(Object sender, ExecutedRoutedEventArgs e)
{
// btn1
}
public void SecondMethod(Object sender, ExecutedRoutedEventArgs e)
{
// btn2
}
}
答案 2 :(得分:3)
快捷方式只适用于您的示例代码。在
最初显示快捷键的下划线是Windows设置,不受应用程序控制。在Windows XP中,转到显示属性 - &gt;外观 - &gt;效果,您将看到一个复选框,标记为“隐藏用于键盘导航的带下划线的字母,直到我按下Alt键”。对于Vista / Win7,我认为他们将这个设置移到其他地方。
答案 3 :(得分:3)
要绑定键盘手势,您需要将 KeyGestures 与命令一起使用。查看commands以获取更多相关信息。此外,还有大量预定义命令可以直接在您的应用程序中使用(如剪切,复制,粘贴,帮助,属性等)。
答案 4 :(得分:3)
我发现最简单的解决方案是在按钮内贴一个标签:
<Button Name="btnHelp"><Label>_Help</Label></Button>