Q047. ショートカットキーでイベントもしくはコマンドを実行するにはどうすればいいのですか?
A. KeyBinding を使います。
例えば画面を閉じる処理を F12 キーと結び付けたい場合、以下のようにします。
まず Window のコードビハインド側に以下のコードがあるとします。(とりあえず VB ですが・・・)
Partial Public Class Window1 ''' <summary>閉じるを実行</summary> Private Sub ExecuteClose(ByVal sender As Object, ByVal e As RoutedEventArgs) Me.Close() End Sub End Class
XAML 側では以下のように CommandBinding で ApplicationCommands.Close プロパティに結び付け、KeyBinding で F12 キーと関連付けます。
<Window ・・・・・> <Window.CommandBindings> <CommandBinding Command="Close" Executed="ExecuteClose" /> </Window.CommandBindings> <Window.InputBindings> <KeyBinding Gesture="F12" Command="Close" /> </Window.InputBindings> </Window>
もしくは以下のように、コードビハインドで定義するのもいいかも知れません。
Partial Public Class SystemWindow ''' <summary>コンストラクタ</summary> Public Sub New() InitializeComponent() Dim context = New SystemViewModel() Me.DataContext = context Me.InputBindings.Add(New KeyBinding(context.OnUpdate, New KeyGesture(Key.F5))) End Sub End Class
KeyBinding に関しては資料が少なく、私もよく判っていないため現在勉強中です。今回の記事は、id:okazuki さんの以下の記事を参考にさせて頂きました。
関連記事 :コマンドですよ その8 「用意されてるコマンド」