リサイズはクリックかドラッグ

基本的な使い方

このトピックでは、ショートカットコマンドの基本的な使用方法について解説します。

概要

ショートカットコマンドは、特定のアクション(クリップボードへコピー、挿入/上書きの切り替え など)を実行するためのコマンドで、特定のキー入力と関連付けて使用します。ユーザーか関連付けられたキー(ショートカットキー)を押すことにより、対応するコマンドのアクションを実行することができます。

ショートカットコマンドの関連付け

InputMan for WPF のコマンドは、RoutedCommand クラスを継承して定義されており、標準で用意されているコマンドと同様、KeyBinding オブジェクトを使用して特定のキーにコマンドを関連付けることができます。

メモ メモ

定義済みショートカットコマンドの一覧については、「定義済みショートカットコマンド一覧」を参照してください。

以下のサンプルコードは、標準の TextBox コントロールに対して、[Enter] キーもしくは [Shift]+[Enter] キーが押されたときに次または前のコントロールへフォーカスを移動する機能を追加します。2番目の TextBox コントロールにフォーカスを移動し、[Enter] キーを押すと次(3番目)の TextBox コントロールへ、[Shift] キーを押しながら [Enter] キーを押すと前(1番目)の TextBox コントロールへ、それぞれフォーカスが移動します。

XAML
<StackPanel>
    <TextBox />
    <TextBox>
        <TextBox.InputBindings>
            <KeyBinding Key="Enter" Command="im:ControlNavigationCommands.NextControl"/>
            <KeyBinding Key="Enter" Modifiers="Shift" Command="im:ControlNavigationCommands.PreviousControl"/>
        </TextBox.InputBindings>
    </TextBox>
    <TextBox />
</StackPanel>

また、InputBindingHelper クラスを使用することで、リソースによって複数のコントロールに対して InputBindings を設定できます。

以下のサンプルコードは、StackPanel 上のすべての TextBox コントロールに対して同じショートカットコマンドを追加します。

XAML
<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="TextBox">
            <Setter Property="im:InputBindingHelper.InputBindings">
                <Setter.Value>
                    <InputBindingCollection>
                        <KeyBinding Key="Enter" Command="im:ControlNavigationCommands.NextControl"/>
                        <KeyBinding Key="Enter" Modifiers="Shift" Command="im:ControlNavigationCommands.PreviousControl"/>
                    </InputBindingCollection>
                </Setter.Value>
            </Setter>
        </Style>
    </StackPanel.Resources>
    <TextBox />
    <TextBox />
    <TextBox />
</StackPanel>
特定の定義済みショートカットコマンドを無効にする

ある特定のキーの組み合わせに割り当てられている定義済みショートカットコマンドの動作を無効にする場合は、そのキーの組み合わせに対して NotACommand コマンドを割り当てます。

以下のサンプルコードは、GcDateTime コントロールに対して F2 キーに割り当てられている動作(入力値のクリア)を無効にします。

XAML
<im:GcDateTime>
    <im:GcDateTime.InputBindings>
        <KeyBinding Key="F2" Command="ApplicationCommands.NotACommand" />
    </im:GcDateTime.InputBindings>
</im:GcDateTime>
参照