Поделиться через


UIElement.KeyboardAccelerators Свойство

Определение

Возвращает коллекцию сочетаний клавиш, вызывающих действие с помощью клавиатуры.

Ускорители обычно назначаются кнопкам или пунктам меню.

Пример меню с ускорителями клавиатуры для различных пунктов меню
Пример меню с ускорителями клавиатуры для различных пунктов меню

public:
 property IVector<KeyboardAccelerator ^> ^ KeyboardAccelerators { IVector<KeyboardAccelerator ^> ^ get(); };
IVector<KeyboardAccelerator> KeyboardAccelerators();
public IList<KeyboardAccelerator> KeyboardAccelerators { get; }
var iVector = uIElement.keyboardAccelerators;
Public ReadOnly Property KeyboardAccelerators As IList(Of KeyboardAccelerator)

Значение свойства

Коллекция объектов KeyboardAccelerator .

Требования к Windows

Семейство устройств
Windows 10 Fall Creators Update (появилось в 10.0.16299.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v5.0)

Примеры

Здесь мы указываем ускорители клавиатуры для набора кнопок (мы указываем подсказку для Button1, которая переопределяет поведение отображения ускорителя клавиатуры по умолчанию).

<StackPanel x:Name="Container" Grid.Row="0" Background="AliceBlue">
    <Button Content="Button1" Margin="20"
            KeyboardAcceleratorPlacementMode="Auto"
            ToolTipService.ToolTip="Tooltip">
        <Button.KeyboardAccelerators>
            <KeyboardAccelerator  Key="A" Modifiers="Windows"/>
        </Button.KeyboardAccelerators>
    </Button>
    <Button Content="Button2"  Margin="20"
            KeyboardAcceleratorPlacementMode="Auto">
        <Button.KeyboardAccelerators>
            <KeyboardAccelerator  Key="B" Modifiers="Windows"/>
        </Button.KeyboardAccelerators>
    </Button>
    <Button Content="Button3"  Margin="20"
            KeyboardAcceleratorPlacementMode="Auto">
        <Button.KeyboardAccelerators>
            <KeyboardAccelerator  Key="C" Modifiers="Windows"/>
        </Button.KeyboardAccelerators>
    </Button>
</StackPanel>

В этом примере мы задаем ускорители клавиатуры для набора объектов MenuFlyoutItem и ToggleMenuFlyoutItem. Ускоритель клавиатуры отображается во всплывающем элементе управления.

<AppBarButton AccessKey="R" Icon="Refresh" Label="Refresh" IsAccessKeyScope="True">
    <AppBarButton.Flyout>
        <MenuFlyout>
            <MenuFlyoutItem AccessKey="A" Icon="Refresh" Text="Refresh A">
                <MenuFlyoutItem.KeyboardAccelerators>
                    <KeyboardAccelerator Key="R" Modifiers="Control"/>
                </MenuFlyoutItem.KeyboardAccelerators>
            </MenuFlyoutItem>
            <MenuFlyoutItem AccessKey="B" Icon="Globe" Text="Refresh B" />
            <MenuFlyoutItem AccessKey="C" Icon="Globe" Text="Refresh C" />
            <MenuFlyoutItem AccessKey="D" Icon="Globe" Text="Refresh D" />
            <ToggleMenuFlyoutItem AccessKey="E" Icon="Globe" Text="ToggleMe">
                <MenuFlyoutItem.KeyboardAccelerators>
                    <KeyboardAccelerator Key="Q" Modifiers="Control"/>
                </MenuFlyoutItem.KeyboardAccelerators>
            </ToggleMenuFlyoutItem>
        </MenuFlyout>
    </AppBarButton.Flyout>
</AppBarButton>

Управление поведением отображения осуществляется с помощью свойства KeyboardAcceleratorPlacementMode, которое принимает два значения: Auto или Hidden.

<Button Content="Save" Click="OnSave" KeyboardAcceleratorPlacementMode="Auto">
    <Button.KeyboardAccelerators>
        <KeyboardAccelerator Key="S" Modifiers="Control" />
    </Button.KeyboardAccelerators>
</Button>

В некоторых случаях может потребоваться предоставить подсказку относительно другого элемента (как правило, объекта-контейнера). Например, элемент управления Pivot, отображающий подсказку для PivotItem с заголовком Pivot.

Здесь мы покажем, как использовать свойство KeyboardAcceleratorPlacementTarget для отображения сочетания клавиш ускорителя клавиатуры для кнопки "Сохранить" с контейнером Grid вместо кнопки.

<Grid x:Name="Container" Padding="30">
  <Button Content="Save"
    Click="OnSave"
    KeyboardAcceleratorPlacementMode="Auto"
    KeyboardAcceleratorPlacementTarget="{x:Bind Container}">
    <Button.KeyboardAccelerators>
      <KeyboardAccelerator  Key="S" Modifiers="Control" />
    </Button.KeyboardAccelerators>
  </Button>
</Grid>

Комментарии

Так как обычно ускорители клавиатуры не описаны непосредственно в пользовательском интерфейсе приложения UWP, можно улучшить их обнаружение с помощью подсказок, которые автоматически появляются, когда пользователь перемещает фокус, нажимает и удерживает кнопку мыши или наводит указатель мыши на элемент управления. Всплывающая подсказка помогает определить, есть ли у элемента управления связанные с ним ускорители клавиатуры, и если они есть — указывает, какая для этого используется клавиша ускорителя клавиатуры.

В Windows 10 версии 1703 появились сочетания клавиш. Однако эти сочетания клавиш не отображались в пользовательском интерфейсе соответствующих элементов управления.

Начиная с Windows 10 версии 1803 при объявлении KeyboardAccelerators элементы управления по умолчанию представляют соответствующие сочетания клавиш в подсказке (если они не связаны с объектами MenuFlyoutItem и ToggleMenuFlyoutItem ).

Примечание

Указание подсказки переопределяет это поведение.

Для объектов MenuFlyoutItem и ToggleMenuFlyoutItem) ускоритель клавиатуры отображается с текстом всплывающего элемента.

Если в элементе управления определено несколько ускорителей, отображается первый зарегистрированный ускоритель.

В зависимости от элемента управления можно переопределить строку сочетания клавиш по умолчанию, связанную с ускорителем клавиатуры, с помощью свойств переопределения текста. См . статьи MenuFlyoutItem.KeyboardAcceleratorTextOverride, AppBarButton.KeyboardAcceleratorTextOverride и AppBarToggleButton.KeyboardAcceleratorTextOverride.

Клавиша ускорителя может быть одной клавишей, например F1– F12 и ESC, или сочетанием клавиш (CTRL+SHIFT+B или CTRL C), которые вызывают команду. Они отличаются от ключей доступа (mnemonics), которые обычно изменяются с помощью клавиши ALT и просто активируют команду или элемент управления.

Ускоритель может быть выполнен, даже если элемент, связанный с ускорителем, не виден. Например, элемент в коллекции CommandBar.SecondaryCommandscommandBar можно вызвать с помощью ускорителя, не разворачивая меню переполнения и не отображая элемент .

По умолчанию акселератор имеет глобальные область. Однако можно ограничить область с помощью KeyboardAccelerator.ScopeOwner или полностью отключить ускоритель с помощью KeyboardAccelerator.IsEnabled.

Применяется к

См. также раздел