是否有替代WPF"键绑定"在UWP?

时间:2018-04-19 04:46:48

标签: c# wpf uwp key-bindings

在我的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按键以运行我的方法的键盘加速器的指示?

1 个答案:

答案 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}}的父级方法,您可以在任何可聚焦控件上重复使用此方法。