我正在尝试构建一个需要在具有触摸屏的Windows 10平板电脑上运行的WPF应用程序。因此,当用户点击TextBox时,必须弹出Windows触摸键盘,并在点击其他内容时离开。
.NET框架(4.7)和Windows 10(16299.192)的当前版本似乎提供了开箱即用的功能,因此我们不再需要打扰/杀死TabTip.exe,但是......有一个非常烦人的错误会破坏一切,我无法弄清楚如何处理它。
为了演示这个问题,我构建了一个简单的WPF应用程序,其中有一个窗口:
<Window x:Class="TextboxTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" SizeToContent="Height" FontSize="40" Width="400">
<StackPanel Margin="20">
<TextBox Margin="5" Padding="10"/>
<TextBox Margin="5" Padding="10"/>
<Button Margin="5" Padding="10" Content="Ruin it!"/>
</StackPanel>
</Window>
当我启动应用程序时,顶部TextBox会聚焦,触摸键盘弹出(假设Windows处于平板电脑模式)。我可以立即打字,这很好用。然后我点击另一个TextBox,键盘停留在屏幕上,再次点击第一个TextBox - 到目前为止一切都很好。
但是一旦我点击按钮(也与其他可调焦控件如InkCanvas一起检查) - 键盘就会疯狂。所以当我点击按钮它消失时,这很好。但是当我点击一个TextBox之后,它闪烁了几分之一秒并立即关闭。我再次点击相同的TextBox - 键盘弹出。我点击另一个TextBox - 它关闭。之后我必须点击每个TextBox两次。这非常烦人。除了重新启动应用程序之外,我无法找到退出此损坏状态的任何方法。
对我来说,这种行为在WPF中看起来像是一个错误。它看起来像一些使用计数器下车或其他东西。 感谢任何帮助。谢谢。