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 オブジェクトのコレクション。

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

<Button Content="Save" Click="OnSave" KeyboardAcceleratorPlacementMode="Auto">
    <Button.KeyboardAccelerators>
        <KeyboardAccelerator Key="S" Modifiers="Control" />
    </Button.KeyboardAccelerators>
</Button>

場合によっては、他の要素 (通常はコンテナー オブジェクト) に関連するヒントを表示する必要があります。 たとえば、ピボット ヘッダー共に PivotItem のヒントを表示するピボット コントロールがあります。

ここでは、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>

注釈

通常、キーボード アクセラレータは UWP アプリケーションの UI で直接説明されるものではありません。ユーザーがフォーカスをコントロールに移動したり、コントロールを長押ししたり、マウス ポインターをコントロール上にホバーしたりするときに自動的に表示される、ヒントを使用すると、キーボード アクセラレータが見つけやすくなります。 ヒントによって、コントロールにキーボード アクセラレータが関連付けられているかどうかを識別でき、関連付けられている場合は、アクセラレータ キーの組み合わせを識別することができます。

Windows 10 バージョン 1703 では、キーボード アクセラレータのショートカットが導入されました。 ただし、これらのショートカットは、対応するコントロールの UI では表示されませんでした。

Windows 10 バージョン 1803 以降では、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 を使用してアクセラレータを完全に無効にしたりできます。

適用対象

こちらもご覧ください