[英]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
}
干得好 ...
响应键盘输入(使用C#/ VB / C ++和XAML的Metro风格应用)
&&
实施键盘辅助功能(使用C#/ VB / C ++和XAML的Metro风格应用)
特别注意路由事件 。 那里也有例子。
希望这可以帮助。
在您的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.