TOC

This article is currently in the process of being translated into Japanese (~97% done).

Control concepts:

Access Keys

Accelerator KeysKeyboard Accelerators と称されることのあるAccess Keys の概念は、Altキーを押しながら他のキーを押すことで、ウィンドウの特定のコントロールにアクセスできるようにするものです。これはウィンドウをマウスの代わりにキーボードで操作できるので、ウィンドウの操作性が良くなります。

アクセスキーの定義

WPFにおけるアクセスキーの定義は大変簡単ですが、その方法には少し驚くかもしれません。普通はプロパティを使うと思うでしょうが、アクセスキーには使いません。代わりに、アクセスキーを定義するためにコントロールのテキストやコンテンツプロパティの文字の手前にアンダースコアを書きます。例えば次のようにします。

<Button Content="_New"></Button>

文字Nの直前にアンダースコア(_)が有ることに気をつけて下さい。これはNキーをこのボタンコントロールのアクセスキーに指定します。デフォルトではコントロールの見た目は変化しません。例では全てのボタンにアクセスキーを定義していますが、変化はありません。

しかし、Alt キーを押すとすぐに有効なアクセスキーがアンダーラインで強調されます。

Alt キーを押し下げている間にアクセスキーを押して、特定のボタンをアクティブにする事ができます。コントロールがマウスでクリックされたかの様に反応します。

アクセスキーはダイアログやウィンドウの単一要素に対して十分に機能しますが、伝統的なウインドウズのメニューでは更に有用です。メニューでは通常、必要なアイテムに辿り着くためにメニューアイテムの階層をクリックしていく必要があります。以下はVisual Studioの例です。

この場合、新しいプロジェクトを始めるために、いくらかのマウス移動とクリックをしてメニュー操作を行う代わりに、Alt キーを押しながら F(File) を押し、N(New) を押してから P( Project) を押します。もちろん、通常のキーボードショートカット(Ctrl+Shift+N)でもできますが、そのショートカットはメニュー階層の最後のアイテムまで来て初めて見えるので、ショートカットを記憶しておく必要があります。アクセスキーは Alt キーを押すとすぐに表示されるのでこちらのほうが簡単に使えるかもしれません。

アクセスキーにどの文字を使うべきか?

コントロールのテキストまたはコンテンツに含まれる文字のどれかを使用したくなるかもしれませんが、正しい文字を使う実質のガイドラインがあります。最も重要なルールはもちろん既に他のコントロールで使われていない文字を選ぶことですが、それに加えて、次の指針を守るべきです。

  • 最初のワード最初の文字を使う
  • それが不可能なら、2番目か3番目の最初のワードの最初の文字を使う(例えばSave AsA
  • それも不可能なら、最初のワードの2番目の文字を使う(例えば OpenP
  • それも不可能ならば、2番めか3番目のワードの2番目の文字を使う(例えば Save Alll
  • 一般的には、il 等の細い文字より m, s, w 等の太い文字を使ったほうがいいです。

二つのコントロールの関連付け

これまで見てきた例では、アクティブにするコントロールに直接アクセスキーを定義することができました。しかし、少なくとも一つ、直接指定できない例があります。例えば TextBox のような入力コントロールでは、テキストボックスの中にその目的を示すテキストを持っていません。代わりに普通、そのテキストボックスの目的をテキストで示すための別のコントロールを使います。それは普通、Label コントロールです。

次の例では、ラベルコントロールはアクセスキーを含む説明のテキストを持っています。しかし、アクティブにしたいコントロールはテキストボックスです。これは問題ありません。すなわち、次のようにラベルの Target プロパティでテキストボックス(や他のコントロール)と結びつけることができます。

<StackPanel Margin="20">
    <Label Content="_First name:" Target="{Binding ElementName=txtFirstName}" />
    <TextBox Name="txtFirstName" />
    <Label Content="_Last name:" Target="{Binding ElementName=txtLastName}" />
    <TextBox Name="txtLastName" />
    <Button Content="_Save" Margin="20"></Button>
</StackPanel>

どのようにラベルでアクセスキーが指定されて、Target プロパティを使って関連する TextBox コントロールに結び付けられているか見て下さい。この実際の動作をするために、BindingElementName を使います。これで、Alt+FとAlt+Lで二つのテキストボックスに、Alt+Sでボタンにそれぞれアクセスできます。これは次の様になります。

まとめ

ウィンドウやダイアログでアクセスキーを使うことで、キーボードだけを使って操作をとても簡単にできます。これは特に、出来るだけキーボードを使うことを好むパワーユーザーに人気があります。特にメニューに関してはいつもアクセスキーを使うべきです。


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!