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 对象的集合。
示例
此处,我们指定一组按钮的键盘快捷键, (为 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>
在某些情况下,你可能需要相对于另一个元素(通常是容器对象)显示工具提示。
此处,我们演示如何使用 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 时,控件默认在工具提示 (中显示相应的组合键,除非它们与 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 完全禁用快捷键。