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 .

Примеры

Здесь мы указываем ускорители клавиатуры для набора кнопок (мы указываем подсказку для 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>

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

Здесь мы покажем, как использовать 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>

Комментарии

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

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), которые вызывают команду. Они отличаются от клавиш доступа (мнемоники), которые обычно изменяются с помощью клавиши ALT и просто активируют команду или элемент управления.

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

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

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

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