大部分的時候,當我們需要鍵盤事件的時候,可以通過在主窗口注冊KeyBinding來實現,不過,有的時候我們需要的是全局鍵盤事件,想在任何一個地方都能使用,最開始的時候我是通過鍵盤鈎子來實現的, 不過鍵盤鈎子這種DLL調用的方式怎么都看着不大爽,這里介紹一種通過EventManager快速實現鍵盤事件感知的例子。
public class KeyboardEvents { public static event Action<KeyEventArgs> OnKeyDown; static KeyboardEvents() { EventManager.RegisterClassHandler(typeof(Window), UIElement.KeyDownEvent, (KeyEventHandler)onKeyDown); } private static void onKeyDown(object sender, KeyEventArgs e) { if (OnKeyDown != null) OnKeyDown(e); } }
這里只是一個簡單的例子,要實現鍵盤輸入攔截也可以用這種方式實現,感知PreviewKeyDownEvent即可,這里就不多介紹了
