WPFショートカットキーについてメモするガキ

WPFのキーバインディングのメモ書き
ショートカットキープロパティがWPFないから仕方ない。
あくまで自分がFFE2でやったやり方だし、あってるか知らんしって感じですけども。

キーバインディング適用するWindowの名前をMainWindowとしておく。
MainWindow.xaml.csに

public readonly static RoutedCommand FocusTop = new RoutedCommand("FocusTop", typeof(MainWindow));//一番上にフォーカスする

とグローバルで宣言しておく。
RoutedCommandのインスタンスを生成するが、第一引数には変数名と同じ名前のString値を、第二引数にはOwnerTypeということで、たぶん適用するコントロールのオーナーであるMainWindowでいいと思うけど。
InputGestureCollectionについてはちょっと良くわかってないです。

this.CommandBindings.Add(new CommandBinding(FocusTop, (s, e) => { FocusTopbutton_Click(s, e); }, (s, e) => e.CanExecute = true));

で、コマンドバインディングを追加する。
ラムダ式使って、CommandBindingのインスタンスを追加する。
第二引数にはどんな処理をするかを書く。別にイベントハンドラである必要はない。MessageBox.Show("miku")とかでもおk。
で、xaml.csいじるのはおしまい。


次はMainWindow.xamlにいきます。



これを内に宣言する。
一番上でいいと思います。

こんなかんじで。

あとは



これをCommandBindingsのちょっと下に書いておけばショートカットキーが使えます。