Моя цель - показать экранную клавиатуру Windows 10, когда пользователь нажимает на текстовое поле.
Windows 10 имеет возможность автоматически отображать свою экранную клавиатуру, даже вне режима планшета, если в настройках включена определенная опция.
Однако, похоже, что у этой логики есть некоторые серьезные проблемы при работе с приложениями WPF - мерцание, отсутствие отображения и т. Д. Вы можете легко протестировать его в простом приложении WPF с несколькими текстовыми полями, если у вас устройство Win10 с сенсорным экраном.
Итак, я решил самостоятельно управлять клавиатурой, которая теперь отлично работает, с отключенной опцией автоматического отображения клавиатуры. Однако я не могу гарантировать, что у каждого пользователя Windows 10 эта опция будет отключена, поэтому я бы хотел, чтобы Windows «игнорировала» щелчки на текстовых полях в моем приложении WPF, поэтому только приложение само контролирует видимость клавиатуры.
Итак, мой вопрос - есть ли способ заставить Windows игнорировать фокус на определенных текстовых полях?
PS. Если нет четкого способа сделать это, я был бы благодарен за любые подсказки о том, как Windows фактически получает информацию о редактируемом текстовом поле WPF, поэтому я могу поиграть с моими собственными реализациями TextBox, которые не будут вызывать эту логику.
Обновление:
Кажется, можно убрать «зацепки», которые использует клавиатура, чтобы определить, что текстовое поле сфокусировано, используя FrameworkElementAutomationPeer
вместо TextBoxAutomationPeer
в пользовательской реализации TextBox
, но это разрушает возможность использования это текстовое поле в автоматизации (что мне не нравится).