[英]Is there an alternative to WPF's “KeyBinding” in UWP?
在我的WPF应用程序中,我正在使用下面编写的内容将F10键的按键绑定绑定到在名为“ btn_font_click”的脚本中运行方法。 但是,很明显,UWP在XAML中不支持像这样的直接键绑定,因为它是通用的并且不是为Windows设计的。
有什么方法可以在UWP应用程序中获得相同的效果?
<Window.Resources>
<RoutedUICommand x:Key="cmd1"></RoutedUICommand>
</Window.Resources>
<Window.CommandBindings>
<CommandBinding Command="{StaticResource cmd1}"
Executed="btn_font_Click">
</CommandBinding>
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Key="F10" Command="{StaticResource cmd1}"></KeyBinding>
</Window.InputBindings>
我用于从RFID阅读器输入数据。 当前,在扫描RFID卡时,按F10键,输入其数据,然后按Enter键。 我的想法是F10将键盘焦点设置到文本框,然后脚本等待回车,同时RFID键入数据,然后获取文本框中的内容并将其拆分为数组以供应用程序使用。
如果有更好或更直接的方法将数据从RFID卡中获取到我的阵列,那么我将寻求其他潜在的解决方案。
编辑:研究了一段时间后,我发现“键盘加速器”最适合于此程序的当前功能,因为我希望在应用程序未聚焦时RFID卡仍能正常工作。 关于如何设置将F10按键链接到我的方法的键盘加速器,我可以得到一些建议吗?
如果您想设置这种应用程序范围的键盘快捷方式机制,那么激活器绝对是实现此目的的一种方法。
提供了有关键盘加速器的文档,并且自Fall Creators Update起提供了此功能。 每个UIElement
都有一个KeyboardAccelerators
集合 ,该集合允许您定义与其交互的键盘加速器。 如果按钮和菜单项调用了指定的快捷方式,则会自动调用该控件,但是要使TextBox
焦点,您必须使用Invoked
事件自行指定此行为:
<TextBox>
<TextBox.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="None"
Key="F10" Invoked="KeyboardAccelerator_OnInvoked" />
</TextBox.KeyboardAccelerators>
</TextBox>
然后在事件处理程序中,将TextBox
重点放在:
private void KeyboardAccelerator_OnInvoked(
KeyboardAccelerator sender,
KeyboardAcceleratorInvokedEventArgs args )
{
(args.Element as Control).Focus(FocusState.Keyboard);
}
KeyboardAcceleratorInvokedEventArgs.Element
属性包含对我们TextBox
的引用,我将其转换为Control
,因为这是声明Focus
方法的TextBox
的父级,并且您可以在任何可聚焦控件上重用此方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.