0

我是 UWP 的新手,我想隐藏在文本框上弹出的屏幕键盘。我已经有数字键盘来接受用户的输入。如何避免键盘的自动功能。

试过PreventKeyboardDisplayOnProgrammaticFocus="True"InputPane.GetForCurrentView().Showing += (s, e) => (s as InputPane).TryHide();

但没有用。

4

1 回答 1

1

您可以PreventKeyboardDisplayOnProgrammaticFocus在 TextBox 上设置为True,这可以解决您的问题。

更新

当用户单击 TextBox 时,FocusState空间的 是Pointer,而不是Programmatic,因此该PreventKeyboardDisplayOnProgrammaticFocus属性不起作用。

这是一种通过视觉欺骗达到你目的的 Hack 方法:

<Grid>
    <TextBox x:Name="HideTextBox" Width="1" Height="1" PreventKeyboardDisplayOnProgrammaticFocus="True"/>
    <TextBox x:Name="ShowTextBox" GotFocus="ShowTextBox_GotFocus" IsReadOnly="True" Text="{Binding ElementName=HideTextBox,Path=Text}"/>
</Grid>

代码隐藏:

private void ShowTextBox_GotFocus(object sender, RoutedEventArgs e)
{
    HideTextBox.Focus(FocusState.Programmatic);
}

可以看到,当ShowTextBox设置为 ReadOnly 时,不会触发虚拟键盘。当它获得焦点时,我们以编程方式将焦点转移到“隐藏” HideTextBox。这时候虚拟键盘就会被截取。用户输入的内容可以通过绑定获得。

它并不完美,我也期待有更好的方法来解决这个问题。

此致。

于 2019-08-01T10:21:46.390 回答