键盘加速器在UWP应用中停止工作

时间:2018-12-12 03:11:33

标签: c# xaml uwp commandbar

我试图在UWP应用程序的CommandBar菜单项中添加键盘加速器。当应用启动时,这可以正常工作,但是在我第一次打开溢出菜单后,加速器停止工作。对于主命令(菜单外)似乎没有发生这种情况,只有溢出菜单内的辅助命令才发生这种情况。另外,单击该菜单项仍然可以正常工作。

XAML:

<CommandBar>
    <CommandBar.SecondaryCommands>
        <AppBarButton Label="Test" Click="AppBarButton_Click">
            <AppBarButton.KeyboardAccelerators>
                <KeyboardAccelerator Key="A" Modifiers="Control" />
            </AppBarButton.KeyboardAccelerators>
        </AppBarButton>
    </CommandBar.SecondaryCommands>
</CommandBar>

后面的代码:

private void AppBarButton_Click(object sender, RoutedEventArgs e)
{
    System.Diagnostics.Debug.WriteLine("test clicked");
}

我在这里丢失了什么吗,或者这是UWP中的错误吗?

编辑:我进行了更多测试,并且我完全相信这是设计缺陷还是错误。如果将按钮设为主要命令,则在按钮可见时,加速器将起作用,但是,如果我调整窗口的大小以使其移至溢出菜单,则加速器将停止工作。

1 个答案:

答案 0 :(得分:0)

由于尚未解决此错误,因此存在解决方法。

使用相同的单击事件和相同的键盘加速器创建无空格按钮(必须可见)。您无需担心两次射击。它只会触发第一个。

<Grid Height="0" Width="0" Opacity="0">
 <Button IsTabStop="False"  Click="AppBarButton_Click">
     <Button.KeyboardAccelerators>
        <KeyboardAccelerator Key="A" Modifiers="Control" />
     </Button.KeyboardAccelerators>
 </Button>
</Grid>


<CommandBar>
    <CommandBar.SecondaryCommands>
        <AppBarButton Label="Test" Click="AppBarButton_Click">
            <AppBarButton.KeyboardAccelerators>
                <KeyboardAccelerator Key="A" Modifiers="Control" />
            </AppBarButton.KeyboardAccelerators>
        </AppBarButton>
    </CommandBar.SecondaryCommands>
</CommandBar>