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

本文关键字:适用于 焦点 事件 KeyDown 应用程序 WPF | 更新日期: 2023-09-27 18:32:20

>我有一个带有WPF接口的计算器,并且有一个包含大多数按钮的网格。我希望这些按钮能够对NumPad键等做出反应。我为所有这些事件创建了 KeyDown 事件,但这仅在我按下其键的按钮当前聚焦时才有效。我读过有关 KeyPreview 属性的信息,但它仅适用于 Windows 窗体,对吗?我觉得我只需要改变我ButtonGrid的属性,但我无法弄清楚。顺便说一下,编程相对较新。

编辑:这是方法之一,通用方法会是什么样子?OnlyDigitsInTextBox 是一个自定义方法,由 .追加文本扩展方法。

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

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

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

WPF 自定义命令

WPF 键绑定

我现在使它与事件处理程序一起使用,为每个可能的按钮使用开关大小写,并将该事件处理程序作为主窗口的属性,将所有按钮的可聚焦属性设置为 False。这可能远非理想,但它现在有效,所以谢谢大家!