none
Alt キーなしで ContextMenu の項目を選択したいんですが… RRS feed

  • 質問

  •  今まで作った趣味アプリケーションを、System.Windows.Forms から System.Windows.Controls (WPF) に移行する作業をしています。

    これまで MenuItem や ToolStripMenuItem などは、アクセス キーが設定されていなくても、先頭の 1文字を押すと 選択できていました。

    ところが WPF の MenuItem は、Alt キーを押さないと Click イベントが起きなくなっているようです。

    Internet Explorer の「お気に入り」のように、動的に ContextMenu の内容を変更したいのですが、アクセス キーの下線を出したくありません。

    アクセス キーを設定する以外で、簡単に Forms コントロールのような動作にする方法はないでしょうか?

    または、MenuItem 以外で、先頭文字を押すと 即 Click イベントが出せる WPF コントロールはないでしょうか?

     よろしくお願いします。

    2012年11月21日 12:00

回答

  • KeyBindingを利用すれば、下線を出さない事は可能かと思います。

        <Window.InputBindings>
            <KeyBinding Key="H" Command="{x:Static my:MainWindow.Hoge}" />
        </Window.InputBindings>

        <Grid>
            <Menu>
                <MenuItem Header="サンプル">
                    <MenuItem Header="Hoge" Command="{x:Static my:MainWindow.Hoge}"/>
          </MenuItem>
            </Menu>
        </Grid>

    • 編集済み t.jin 2012年11月21日 13:35 レイアウト崩れを修正
    • 回答の候補に設定 佐伯玲 2012年11月26日 0:04
    • 回答としてマーク 佐伯玲 2012年11月27日 0:52
    2012年11月21日 13:21

すべての返信

  • KeyBindingを利用すれば、下線を出さない事は可能かと思います。

        <Window.InputBindings>
            <KeyBinding Key="H" Command="{x:Static my:MainWindow.Hoge}" />
        </Window.InputBindings>

        <Grid>
            <Menu>
                <MenuItem Header="サンプル">
                    <MenuItem Header="Hoge" Command="{x:Static my:MainWindow.Hoge}"/>
          </MenuItem>
            </Menu>
        </Grid>

    • 編集済み t.jin 2012年11月21日 13:35 レイアウト崩れを修正
    • 回答の候補に設定 佐伯玲 2012年11月26日 0:04
    • 回答としてマーク 佐伯玲 2012年11月27日 0:52
    2012年11月21日 13:21
  •  ありがとうございます^^

    試してみたら、思っている通りの表示になりました。

    …にしても、Forms の時の キー入力イベント→イベントハンドラ の流れに比べて、

    WPF だと コマンド発行が入る分 ややっこしいですね -ω-;

     (好みの問題でしょうけど;)

    何で入力の手順を増やす方向に 改変しちゃうんでしょうね… > マイクロソフト

    2012年11月22日 11:13