将快捷键指定给WPF中的按钮

3hvapo4f  于 2023-04-22  发布在  其他
关注(0)|答案(6)|浏览(262)

如何在WPF中为按钮分配快捷键?
Google给了我答案,在标准的Winforms中用append _代替'&'。
所以在我做了如下操作之后:

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

我没有发现H的下划线。
这是首要问题。
第二个问题是,在运行时按Alt + H后如何执行。对于示例来说,只显示一个消息框就足够了。
我用的是C#,WPF
谢谢。

fykwrbwg

fykwrbwg1#

这是一个古老的问题,但我今天遇到了同样的问题。
我发现最简单的解决方案是对按钮的内容使用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

uinbv5nw

uinbv5nw2#

使用自己的命令进行键绑定(+按钮绑定)的解决方案:
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
    }
}
a0zr77ik

a0zr77ik3#

示例代码的快捷方式是h
在Windows XP中,进入显示属性-〉外观-〉效果,你会看到一个标有“隐藏键盘导航的下划线字母,直到我按下Alt键”的复选框。对于Vista/Win7,我认为他们把这个设置移到了其他地方。

57hvy0tb

57hvy0tb4#

我发现的最简单的解决方案是在按钮内粘贴标签:

<Button Name="btnHelp"><Label>_Help</Label></Button>
z31licg0

z31licg05#

要绑定 * 键盘手势,* 您需要使用 KeyGesturescommands。查看commands了解更多信息。此外,还有大量可以直接在应用程序中使用的预定义命令(如剪切,复制,粘贴,帮助,属性等)。

epfja78i

epfja78i6#

这有点老了,但我今天遇到了同样的问题。我发现最简单的解决方案是只使用一个隐藏的元素作为快捷键。

<Button x:Name="b2" Click="Button_Click">
    <Button.Content>
        <StackPanel Orientation="Horizontal">
            <Label Width="0" Height="0">_H</Label>
            <TextBlock>
                <Underline>H</Underline>elp
            </TextBlock>
        </StackPanel>
    </Button.Content>
</Button>

相关问题