4

我正在尝试将键盘加速器添加到 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 中的错误?

编辑:我做了更多测试,我相当确信这要么是设计缺陷,要么是错误。如果我将按钮设置为主要命令,则加速器在按钮可见时工作,但如果我调整窗口大小以使其移动到溢出菜单,加速器将停止工作。

4

1 回答 1

1

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

使用相同的点击事件和相同的键盘加速器创建无空格按钮(它们必须是可见的)。你不必害怕双重射击。它只会触发第一个。

<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>
于 2020-05-26T15:29:54.367 回答