MESCIUS InputMan for WPF 3.0J
基本的な使い方

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

概要

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

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

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

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

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

<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 コントロールに対して同じショートカットコマンドを追加します。

<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 キーに割り当てられている動作(入力値のクリア)を無効にします。

<im:GcDateTime>
  <im:GcDateTime.InputBindings>
    <KeyBinding Key="F2" Command="ApplicationCommands.NotACommand" />
  </im:GcDateTime.InputBindings>
</im:GcDateTime>
関連トピック

 

 


© MESCIUS inc. All rights reserved.