Windows 10 Mobile保持软键盘隐藏,但然后能够手动显示它

时间:2017-05-25 23:25:40

标签: c# .net xaml windows-10-universal

我在移动设备上运行了一个Windows 10 UWP应用。我有一些文本框控件,我不想在默认情况下获得焦点时显示软键盘。有一个很好的理由,这是因为有一个条形码扫描仪为我们输入现场数据。因此,我希望用户选择将焦点放在字段中,然后它将由条形码扫描器中的另一个事件填充。在这种情况下无需显示软键盘,而且大部分情况都是如此。但是,可能需要任何原因(条形码扫描器不能正常工作在特定的条形码上等),他们将手动需要键入数据。在这种情况下,我确实想要显示软键盘。所以,我想的是在文本框中设置此属性:

hasvalue exactly 1 value

tbTracking.PreventKeyboardDisplayOnProgrammaticFocus = false;

这会阻止它在我提供程序化焦点时显示,但在选择它时仍会显示。

所以,然后我尝试使用此代码忽略文本框并使用文本框周围的边框:

PreventKeyboardDisplayOnProgrammaticFocus="True"

有了这个,我认为在代码中我可以将字段设置为在单击时以编程方式对焦,并且由于无法在程序焦点上显示键盘,键盘将无法显示...这就是我想要的并且是一切都很好/正在工作。

然而,当我想展示它时,这就是我遇到问题的地方。我想我可以双击或按住,然后会显示键盘。我认为虽然这给了我所需要的东西,但这是一个很好的功能。但是,我无法让它发挥作用。我在事件处理程序中尝试了两件事来保持和/或双击。

我首先尝试强制键盘焦点显示键盘,但这不起作用。

<Border Grid.Row="1" Grid.Column="1" Margin="5,5,5,5" Name="brdTracking" Background="Transparent" Tapped="BrdTracking_OnTapped" IsDoubleTapEnabled="True" DoubleTapped="BrdTracking_OnDoubleTapped" Holding="BrdTracking_OnHolding">
   <TextBox Name="tbTracking" PlaceholderText="Tracking Number" PreventKeyboardDisplayOnProgrammaticFocus="True" IsHitTestVisible="False" VerticalAlignment="Center"/>
</Border>

然后我尝试禁用程序化焦点设置,设置焦点然后重新启用设置,但这也不起作用。

    private void BrdTracking_OnDoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
    {
        tbTracking.Focus(FocusState.Keyboard);
    }

总而言之,我的主要问题是如何强制显示软键盘?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用InputPane类显示软键盘:

InputPane.GetForCurrentView().TryShow();