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