У нас странное поведение с нашим приложением WPF в Windows 10 (обновление 1803 - Microsoft Surface Go).
Внутри приложения у меня есть Tabcontrol, и его ItemsSource привязан в коде за списком объектов (на основе usercontrol).
Всякий раз, когда я нажимаю внутри текстового поля, клавиатура Windows 10 появляется и сразу исчезает. Если я снова нажму на текстовое поле, клавиатура появится правильно. Когда я нажимаю в другом текстовом поле, то же самое происходит снова (клавиатура появляется / исчезает, и мне нужно снова нажать в том же текстовом поле).
В других частях приложения этого не происходит.
Как ни странно, когда я только что получил планшет, я бы поклялся, что этой проблемы не произошло. С тех пор Windows обновилась.
Я подозреваю, что это связано с одним из обновлений Windows, потому что это же приложение отлично работает на других планшетах с Windows 10 другого бренда (один из этих других планшетов, я уверен, что они имеют версию Windows 10 LTSB от 2016 года).
Я пытался удалить столько обновлений, сколько смогу, но не могу удалить накопительное обновление 1803.
Версия .Net, которую я использовал, - .Net 4.0, и я попытался обновить до 4.7.2, но безуспешно. Как советовали в этой теме: C # WPF Windows 10 (1803) TouchKeyboard ненадежная проблема (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
Я попытался переключиться в режим планшета и в режим рабочего стола. В обоих случаях происходит одинаковое поведение. Итак, теперь я перешел в режим рабочего стола с настройкой «панели управления», где клавиатура появляется, если физическая клавиатура не подключена.
Единственный найденный мной обходной путь:
Поместите tabcontrol внутри Grid и gridrow и создайте второй GridRow (height = 0) с текстовым полем внутри (новое текстовое поле ДОЛЖНО быть вне tabcontrol). Когда нажата одна из вкладок, поместите фокус на вновь созданное текстовое поле.
Keyboard.Focus (focusbox);
Когда я это делаю, клавиатура не исчезает при первом нажатии на текстовое поле внутри tabcontrol.