WPF应用程序中的KeyDown事件仅适用于Focus

时间:2016-01-29 08:01:18

标签: c# wpf keydown

我有一个带有WPF接口的计算器,并且有一个包含大多数按钮的网格。我希望这些按钮能够对NumPad键等做出反应。我为所有这些创建了 KeyDown事件,但这只适用于我按下的按键当前关注的按钮。我读到了 KeyPreview属性,但这只适用于Windows Forms,对吗?我觉得我只需要更改ButtonGrid的属性,但我无法弄明白。 顺便提一下编程相对较新。

编辑:这是方法之一,泛型方法怎么样? OnlyDigitsInTextBox是一个自定义方法,由.AppendText扩展方法组成。

private void Button6_Key(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.NumPad6)
        {
            OnlyDigitsInTextBox("6");
        }
    }

2 个答案:

答案 0 :(得分:1)

最好的方法是将自定义命令与KeyBindings一起使用。

WPF Custom Commands

WPF KeyBindings

答案 1 :(得分:0)

我现在使用EventHandler为每个可能的按钮使用 switch case ,并将该EventHandler作为MainWindow的属性,将所有按钮的Focusable属性设置为False。这可能远非理想,但它现在有效,所以谢谢大家!