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.