在tabcontrol内的WPF文本框中单击时,为什么Windows 10键盘会出现并立即消失?

时间:2018-10-26 10:13:43

标签: c# wpf keyboard windows-10

我们在Windows 10中使用WPF应用程序(更新1803-Microsoft Surface Go)有一个奇怪的行为。

在应用程序内部,我有一个Tab控件,它的ItemsSource绑定在代码的后面,该列表位于对象列表(基于用户控件)的后面。

每当我在文本框中按下时,Windows 10键盘就会出现并立即消失。如果我再次单击文本框,键盘将正确显示。当我在另一个文本框中按下时,会再次发生相同的情况(键盘出现/消失,我必须在同一文本框中再次按下)。

在应用程序的其他部分中没有发生。

奇怪的是,当我刚拿到平板电脑时,我就发誓这个问题没有发生。从那时起,Windows已更新。

我怀疑这与Windows更新之一有关,因为同一应用程序在具有其他品牌Windows 10的其他平板电脑上可以正常工作(这些其他平板电脑中的一个我相信它们具有2016年的Windows 10 LTSB版本)。

我已尝试删除尽可能多的更新,但无法删除1803累积更新。

我正在使用的.Net版本是.Net 4.0,但我尝试将其更新到4.7.2,但未成功。如该线程所建议:C# WPF Windows 10 (1803) TouchKeyboard unreliable Issue (Prism ClickOnce)

我看到另一个人抱怨只有在特定的Windows 10更新后,他们才会遇到类似的问题。 https://social.msdn.microsoft.com/Forums/en-US/b9efb4eb-e0a9-4bf0-9985-57a673c42f79/wpf-application-windows-10-touch-keyboard-flickering-issue?forum=wpf

我试图切换到平板电脑模式和桌面模式。在两种情况下,都会发生相同的行为。因此,现在我默认使用“控制面板”设置为桌面模式,该设置在没有连接物理键盘的情况下显示键盘。 enter image description here


我发现的唯一解决方法如下:

  1. 将tabcontrol放置在Grid和gridrow中,并创建第二个GridRow(height = 0),其中包含一个文本框(新的Textbox必须位于tabcontrol外部)。按下其中一个标签时,将焦点放在新创建的文本框上。

    Keyboard.Focus(focusbox);

当我这样做时,第一次按下tab控件内的文本框时键盘不会消失。

0 个答案:

没有答案
相关问题