关闭windows

时间:2017-01-11 18:41:31

标签: uwp windows-10-mobile

我在运行Windows 10的手持设备上运行了一个uwp应用程序。手持设备有一个条形码扫描仪,应用程序的所有输入都是用这个来完成的。因此,当用户将焦点移动到任何文本框控件时,我想阻止键盘出现。

在很大程度上,焦点是以编程方式处理的 - 我已经阻止键盘在PreventKeyboardDisplayOnProgrammaticFocus=True的情况下出现。 但是用户确实需要自己移动焦点,当他这样做时我找不到阻止键盘出现的任何方法。

我找到了有关上述程序化焦点的文章,以及当用户在文本框中按Enter键时隐藏键盘 - 并将控件的readonly值设置为true。但这些不适用于这种情况。我希望能够阻止它在这个应用程序中出现。 有人可以建议吗?

1 个答案:

答案 0 :(得分:5)

我不确定是否有直接的方法来防止键盘出现。通过订阅 InputPane的事件,您一定可以隐藏键盘:

InputPane.GetForCurrentView().Showing += (s, e) => (s as InputPane).TryHide();

但这并不好看。因此,我尝试了一种棘手的方法来实现您想要的功能 - 禁用 TextBox 进行命中测试,并在其下使用虚拟控件来设置程序化焦点。正如我测试过它应该有效。样本xaml:

<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Border Tapped="Border_Tapped" Background="Transparent">
        <TextBox x:Name="myTextBox" Width="200" Height="100" Header="Enter:" PreventKeyboardDisplayOnProgrammaticFocus="True" IsHitTestVisible="False"/>
    </Border>
    <Button Margin="20" Content="Dummy to test focus"/>
</StackPanel>

背后的代码:

private void Border_Tapped(object sender, TappedRoutedEventArgs e)
{
    myTextBox.Focus(FocusState.Programmatic);
}