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>

この例では、 オブジェクトと ToggleMenuFlyoutItem オブジェクトのMenuFlyoutItemセットにキーボード アクセラレータを指定します。 キーボード アクセラレータがコントロールのポップアップに表示されます。

<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 プロパティを使用します。このプロパティは 2 つの値、Auto または Hidden を受け入れます。

<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 では表示されませんでした。

ビルド 1803 以降Windows 10、KeyboardAccelerators が宣言されている場合、コントロールは対応するキーの組み合わせを既定でツールヒントに表示します (MenuFlyoutItem オブジェクトと ToggleMenuFlyoutItem オブジェクトに関連付けられていない限り)。

注意

ツールヒントを指定すると、この動作がオーバーライドされます。

MenuFlyoutItem および ToggleMenuFlyoutItem オブジェクトでは、キーボード アクセラレータはポップアップ テキストと共に表示されます。

コントロールに複数のアクセラレータが定義されている場合は、最初に登録されたアクセラレータが表示されます。

コントロールに応じて、[キーボード アクセラレータ] に関連付けられている既定のキーの組み合わせ文字列を、テキストオーバーライド プロパティを使用してオーバーライドできます。 「MenuFlyoutItem.KeyboardAcceleratorTextOverride」、「AppBarButton.KeyboardAcceleratorTextOverride」、および「AppBarToggleButton.KeyboardAcceleratorTextOverride」を参照してください。

アクセラレータ キーには、F1 - F12 や Esc などの 1 つのキー、またはコマンドを呼び出すキーの組み合わせ (Ctrl + Shift + B、または Ctrl C) を指定できます。 これらは、通常 Alt キーで変更され、単にコマンドまたはコントロールをアクティブ化するアクセス キー (ニーモニック) とは異なります。

アクセラレータに関連付けられている要素が表示されない場合でも、アクセラレータを実行できます。 たとえば、CommandBarCommandBar.SecondaryCommands コレクション内の項目は、オーバーフロー メニューを展開して 要素を表示せずにアクセラレータを使用して呼び出すことができます。

既定では、アクセラレータにはグローバル スコープがあります。 ただし、 KeyboardAccelerator.ScopeOwner を使用してスコープを制限したり、 KeyboardAccelerator.IsEnabled を使用してアクセラレータを完全に無効にしたりできます。

適用対象

こちらもご覧ください