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 и более поздних версий при объявлении клавиатурыAccelerator элементы управления представляют соответствующие сочетания ключей по умолчанию в подсказке (если они не связаны с объектами MenuFlyoutItem и ToggleMenuFlyoutItem). Обратите внимание, что явное указание подсказки переопределяет это поведение.
Для объектов MenuFlyoutItem и ToggleMenuFlyoutItem ускоритель клавиатуры отображается с текстом всплывающего элемента.
Если элемент управления имеет несколько акселераторов, будет представлен первый зарегистрированный акселератор.
В зависимости от элемента управления можно переопределить строку сочетания клавиш по умолчанию, связанную с [акселератором клавиатуры с помощью свойств переопределения текста. См. разделMenuFlyoutItem.KeyboardAcceleratorTextOverride, AppBarButton.KeyboardAcceleratorTextOverride и AppBarToggleButton.KeyboardAcceleratorTextOverride.
Клавиша акселератора может быть одним ключом, например F1 – F12 и ESC, или сочетанием клавиш (CTRL+ SHIFT+ B или CTRL C), которые вызывают команду. Они отличаются от ключей доступа (mnemonics), которые обычно изменяются с помощью клавиши ALT и просто активируют команду или элемент управления.
Акселератор можно выполнить, даже если элемент, связанный с акселератором, не отображается. Например, можно вызвать элемент в коллекции CommandBar.SecondaryCommands с помощью акселератора без расширения меню переполнения и отображения элемента.
По умолчанию акселератор имеет глобальную область. Однако можно ограничить область с помощью КлавиатурыAccelerator.ScopeOwnerer или полностью отключить акселератор с помощью КлавиатурыAccelerator.IsEnabled.