その1「ICommandインターフェース」:http://blogs.wankuma.com/kazuki/archive/2008/03/16/127903.aspx
その2「GUIにコマンドを結びつける」:http://blogs.wankuma.com/kazuki/archive/2008/03/16/127927.aspx
前回までで、コマンドを作ってボタンとかに関連付けることができるようになった。
今回は、これをキーボードのショートカットで呼び出せるようにしてみたいと思う。
その2で作った「こんにちは世界」と表示するコマンドをCtrl + Gを押したら実行させるようにしてみたいと思う。
そのための仕組みとして、WPFにはInputBindingとかいうのがあったりする。
よく見てみると、キーボード以外にマウスとかにも対応しているようだ。
調子にのって、Ctrl + 左クリックでも「こんにちは世界」を表示させてみようと思う。
キーボードは、KeyBindingクラス。マウスは、MouseBindingというクラスを使ってコマンドに関連付けるみたい。
そして、WindowとかにあるInputBindingsプロパティに追加していくとOK。
早速実験してみた。
using System.Windows;
using System.Windows.Input;
namespace WpfCommand
{
public partial class Window1 : Window
{
public static readonly ICommand HelloCommand = new HelloCommand();
public Window1()
{
InitializeComponent();
// Ctrl + GをHelloCommandへ
KeyBinding keyBinding = new KeyBinding(HelloCommand,
new KeyGesture(Key.G, ModifierKeys.Control));
// Ctrl + 左クリックをHelloCommandへ
MouseBinding mouseBinding = new MouseBinding(HelloCommand,
new MouseGesture(MouseAction.LeftClick, ModifierKeys.Control));
// バインディングをWindowのInputBindingsへ登録
this.InputBindings.Add(keyBinding);
this.InputBindings.Add(mouseBinding);
}
}
}
これでCtrl+Gを押したり、Ctrl + 左クリックで「こんにちは世界」が表示されるようになる。
便利だ。