Ускоритель клавиатуры перестает работать в приложении 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>
Другие вопросы по тегам