繁体   English   中英

与WinRT Metro中的'KeyPreview'属性等效

[英]Equivalent of 'KeyPreview' property in WinRT Metro

我正在编写一个Metro应用程序,在该应用程序中,只要用户开始键入,就可以将焦点跳转到单个文本框。 但是我无法弄清楚如何在本地实现此功能,而不修改其他用户控件以检测按键按下并将焦点转发到文本框。

在WinForms中,我将使用窗体的“ KeyPreview”属性,该属性会导致窗体控件内的所有按键按下,从而触发窗体KeyDown / KeyPress / KeyUp事件。 我在地铁里找不到任何同等的东西。

我尝试过一种天真的解决方案,即只在焦点移到文本框时就将焦点移到文本框,但这存在明显的问题(例如,按钮闪烁而不是在单击并按住它们时保持突出显示状态)。

如何确保任何键盘输入都能进入特定的文本框?

该事件需要放置在当前核心窗口上,该窗口是所有控件嵌套的根元素。

Windows.UI.Xaml.Window.Current.CoreWindow.KeyDown += (sender, arg) => {
    // invoked anytime a key is pressed down, independent of focus
}

在您的xaml代码中,您将这些事件绑定到页面:

    Loaded="pageRoot_Loaded_1"
    Unloaded="pageRoot_Unloaded_1"

在这些方法中,您必须绑定和取消绑定事件以进行击键或按键操作

    private void pageRoot_Loaded_1(object sender, RoutedEventArgs e)
    {
    Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
    }

    private void pageRoot_Unloaded_1(object sender, RoutedEventArgs e)
    {
        Window.Current.CoreWindow.KeyDown -= CoreWindow_KeyDown;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM