将快捷键分配给WPF中的按钮

时间:2010-07-14 12:38:55

标签: wpf c#-3.0

如何在WPF中为按钮指定快捷键?

谷歌搜索给了我答案,以便追加_而不是'&'在标准的Winforms中。

所以在完成以下操作后:

<Button Name="btnHelp" Content="_Help"></Button> 

我没有发现'H'有下划线。

这是第一个问题。

第二个问题是,如何在运行时按Alt + H后执行该操作。如果只是为了示例而显示一个消息框就足够了。

我正在使用C#,WPF

感谢。

5 个答案:

答案 0 :(得分:40)

这有点旧,但今天我遇到了同样的问题 我发现最简单的解决方案是只使用AccessText元素作为按钮的内容。

<Button Command="{Binding SomeCommand}">
    <AccessText>_Help</AccessText>
</Button>

当您按 Alt 键时,按钮上的“H”将加下划线。
当您按下组合键 Alt + H 时,将执行绑定到该按钮的命令。

http://social.msdn.microsoft.com/Forums/vstudio/en-US/49c0e8e9-07ac-4371-b21c-3b30abf85e0b/button-hotkeys?forum=wpf

答案 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>