UIElement.KeyboardAccelerators 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
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 时,控件默认在工具提示 (中显示相应的键组合,除非它们与 MenuFlyoutItem 和 ToggleMenuFlyoutItem 对象关联) 。
注意
指定工具提示会替代此行为。
对于 MenuFlyoutItem 和 ToggleMenuFlyoutItem) 对象,键盘快捷键与浮出控件文本一起显示。
如果控件定义了多个加速器,则会显示第一个已注册的加速器。
根据控件,可以使用文本替代属性替代与键盘快捷键关联的默认组合键字符串。 请参阅 MenuFlyoutItem.KeyboardAcceleratorTextOverride、 AppBarButton.KeyboardAcceleratorTextOverride 和 AppBarToggleButton.KeyboardAcceleratorTextOverride。
快捷键可以是单个键,例如 F1 - F12 和 Esc,也可以是调用命令 (Ctrl + Shift + B 或 Ctrl C) 键的组合。 它们不同于访问键 (助记) ,这些助记键通常使用 Alt 键进行修改,只需激活命令或控件即可。
即使与加速器关联的元素不可见,也可以执行加速器。 例如,可以使用快捷键调用 CommandBar 的 CommandBar.SecondaryCommands 集合中的项,而无需展开溢出菜单并显示元素。
默认情况下,加速器具有全局范围。 但是,可以使用 KeyboardAccelerator.ScopeOwner 约束范围,也可以使用 KeyboardAccelerator.IsEnabled 完全禁用快捷键。