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.