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 属性控制显示行为,该属性接受两个值:自动隐藏

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

在某些情况下,你可能需要相对于另一个元素(通常是容器对象)显示工具提示。 例如,“透视”控件通过“透视”标头显示 PivotItem 的工具提示。

下面,我们介绍如何使用 KeyboardAcceleratorPlacementTarget 属性通过网格容器而不是按钮来显示“保存”按钮的键盘加速键组合。

<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 应用程序的 UI 中一般并不直接说明键盘加速键,因此,你可以通过工具提示提高可发现性,当用户将焦点移动到某个控件、按住某个控件或将鼠标指针悬停在某个控件上时,会自动显示工具提示。 工具提示可以标识某个控件是否有关联的键盘加速键,如果有,将会标识加速键组合。

Windows 10版本 1703 引入了键盘快捷方式。 但是,这些快捷方式未与其相应控件的 UI 一起显示。

从 Windows 10 版本 1803 开始,在声明 KeyboardAccelerator 时,控件默认在工具提示 (中显示相应的键组合,除非它们与 MenuFlyoutItemToggleMenuFlyoutItem 对象关联) 。

注意

指定工具提示会替代此行为。

对于 MenuFlyoutItemToggleMenuFlyoutItem) 对象,键盘快捷键与浮出控件文本一起显示。

如果控件定义了多个加速器,则会显示第一个已注册的加速器。

根据控件,可以使用文本替代属性替代与键盘快捷键关联的默认组合键字符串。 请参阅 MenuFlyoutItem.KeyboardAcceleratorTextOverrideAppBarButton.KeyboardAcceleratorTextOverrideAppBarToggleButton.KeyboardAcceleratorTextOverride

快捷键可以是单个键,例如 F1 - F12 和 Esc,也可以是调用命令 (Ctrl + Shift + B 或 Ctrl C) 键的组合。 它们不同于访问键 (助记) ,这些助记键通常使用 Alt 键进行修改,只需激活命令或控件即可。

即使与加速器关联的元素不可见,也可以执行加速器。 例如,可以使用快捷键调用 CommandBar 的 CommandBar.SecondaryCommands 集合中的项,而无需展开溢出菜单并显示元素。

默认情况下,加速器具有全局范围。 但是,可以使用 KeyboardAccelerator.ScopeOwner 约束范围,也可以使用 KeyboardAccelerator.IsEnabled 完全禁用快捷键。

适用于

另请参阅