LoginSignup
24
41

More than 5 years have passed since last update.

[WPF][XAML][MVVM] WPF + MVVM でキーイベントを定義する

Last updated at Posted at 2017-09-04

WPF + MVVM でキーイベントを扱う方法のメモ

もちろん旧来通りKeyDownのイベントハンドラを利用してもいいんでしょうけど、MVVM的な実装をしたいので調べたら簡単な方法がありました。

実装例

Ctrl + S でViewModelの特定の内容を保存するコマンドを呼び出したい場合。

実装例1(Gestureを利用)
    <Grid>
        <Grid.InputBindings>
            <KeyBinding Gesture="Ctrl+S" Command="{Binding SaveFileCommand}"/>
        </Grid.InputBindings>
    </Grid>
実装例2(KeyとModifiersを利用)
    <Grid>
        <Grid.InputBindings>
            <KeyBinding Key="S" Modifiers="Control" Command="{Binding SaveFileCommand}"/>
        </Grid.InputBindings>
    </Grid>

上記の方法はどちらでも良いですが、複数キーの組み合わせの場合は1つ目の Gesture のほうが簡単そうです。
Gesture の場合の利点としては Ctrl+Alt+S などの2つ以上でもそのまま書けるところです。

KeyBindingの定義は以下になります。

KeyBinding クラス (System.Windows.Input)

Gesture指定可能キー

Modifiers

対応キー 指定値
Alt キー Alt
Control キー Control / Ctrl
Shift キー Shift
Windows キー Windows

Key

※よくつかうだろうもの抜粋。わからなければKeyの補完から探すと良い

対応キー 指定値
↑ キー Up
↓ キー Down

関連

InputBindingsでは同様にマウスイベントも取り扱えます。

MouseBinding クラス (System.Windows.Input)

参考

Keyboard events in a WPF MVVM application? - Stack Overflow
連載:WPF入門:第6回 「コマンド」と「MVVMパターン」を理解する (2/3) - @IT

24
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
41