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>

在此示例中,我们为一组 MenuFlyoutItemToggleMenuFlyoutItem 对象指定键盘快捷键。 键盘快捷键显示在控件的浮出控件中。

<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>

在某些情况下,你可能需要相对于另一个元素(通常是容器对象)显示工具提示。

此处,我们演示如何使用 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>

注解

由于键盘快捷键通常不会在应用程序的 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 完全禁用快捷键。

适用于

另请参阅