我是 UWP 的新手,我想隐藏在文本框上弹出的屏幕键盘。我已经有数字键盘来接受用户的输入。如何避免键盘的自动功能。
试过PreventKeyboardDisplayOnProgrammaticFocus="True"
和
InputPane.GetForCurrentView().Showing += (s, e) => (s as InputPane).TryHide();
但没有用。
我是 UWP 的新手,我想隐藏在文本框上弹出的屏幕键盘。我已经有数字键盘来接受用户的输入。如何避免键盘的自动功能。
试过PreventKeyboardDisplayOnProgrammaticFocus="True"
和
InputPane.GetForCurrentView().Showing += (s, e) => (s as InputPane).TryHide();
但没有用。
您可以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
。这时候虚拟键盘就会被截取。用户输入的内容可以通过绑定获得。
它并不完美,我也期待有更好的方法来解决这个问题。
此致。