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 控制展示行為,其接受兩種值:AutoHidden

<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 和更新版本中,當宣告 KeyboardAccelerators 時,控制項預設會在工具提示 (中呈現對應的按鍵組合,除非它們與MenuFlyoutItemToggleMenuFlyoutItem物件相關聯) 。

注意

指定工具提示會覆寫此行為。

對於 MenuFlyoutItemToggleMenuFlyoutItem 物件,鍵盤快速鍵會顯示飛出視窗文字。

如果控制項已定義多個快速鍵,則會顯示第一個已註冊的快速鍵。

視控制項而定,您可以使用文字覆寫屬性來覆寫與 [鍵盤快速鍵] 相關聯的預設按鍵組合字元串。 請參閱MenuFlyoutItem.KeyboardAcceleratorTextOverrideAppBarButton.KeyboardAcceleratorTextOverrideAppBarToggleButton.KeyboardAcceleratorTextOverride

快速鍵可以是單一按鍵,例如 F1 - F12 和 Esc, (或是叫用命令的 Ctrl + Shift + B 或 Ctrl C) 複合鍵。 它們不同于便捷鍵 (助憶鍵) ,通常是使用 ALT 鍵進行修改,而且只要啟用命令或控制項即可。

即使看不到與快速鍵相關聯的專案,也可以執行快速鍵。 例如,您可以使用快速鍵叫用CommandBar 的 CommandBar.SecondaryCommands集合中的專案,而不需展開溢位功能表並顯示元素。

根據預設,加速器具有全域範圍。 不過,您可以使用 KeyboardAccelerator.ScopeOwner 限制範圍,或使用 KeyboardAccelerator.IsEnabled完全停用快速鍵。

適用於

另請參閱