Ускоритель клавиатуры перестает работать в приложении UWP
Я пытаюсь добавить ускоритель клавиатуры в пункт меню CommandBar в приложении UWP. Это прекрасно работает, когда приложение запускается, но после того, как я впервые открываю меню переполнения, ускоритель перестает работать. Это не происходит с первичными командами (за пределами меню), только с вторичными командами внутри меню переполнения. Кроме того, пункт меню по-прежнему работает нормально при нажатии.
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 ответов
Поскольку эта ошибка не устранена, существует обходной путь.
Создавайте кнопки без пробела (они должны быть видны) с тем же событием щелчка и тем же ускорителем клавиатуры. Вам не нужно бояться двойной стрельбы. Он выстрелит только первым.
<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>