在我的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,键入其数据然后按回车键。 我的想法是F10将键盘焦点设置为文本框,然后脚本等待输入按下,同时RFID输出其数据,然后在文本框中将其分解为一个数组,以便在其中使用应用
如果有更好或更直接的方式将数据从RFID卡内部传输到我的阵列,我可以开放其他潜在的解决方案。
编辑:经过一段时间的研究,我发现键盘加速器&#39;对于这个程序当前的功能是最好的,因为我希望RFID卡仍然可以工作,而应用程序不是焦点。我是否可以获得一些关于如何设置连接F10按键以运行我的方法的键盘加速器的指示?
答案 0 :(得分:1)
如果你想设置这种应用程序范围的键盘快捷键机制,激活器肯定是一种方法。
有一个documentation on keyboard accelerators可用,自Fall Creators Update以来,此功能可用。每个G
都有一个KeyboardAccelerators
collection,可让您定义与之互动的键盘加速器。如果按钮和菜单项调用指定的快捷方式会自动调用该控件,但为了使您的UIElement
成为焦点,您必须使用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
的{{1}}的父级方法,您可以在任何可聚焦控件上重复使用此方法。