Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf &引用;隐藏“;自动Win10键盘显示的文本框_Wpf_Windows 10_On Screen Keyboard - Fatal编程技术网

Wpf &引用;隐藏“;自动Win10键盘显示的文本框

Wpf &引用;隐藏“;自动Win10键盘显示的文本框,wpf,windows-10,on-screen-keyboard,Wpf,Windows 10,On Screen Keyboard,我的目标是在用户单击文本框时显示Windows10屏幕键盘 如果在“设置”中启用了特定选项,则Windows 10可以选择自动显示其屏幕键盘,即使在平板电脑模式之外 然而,在使用WPF应用程序时,这种逻辑似乎存在一些严重的问题-闪烁、根本不显示等。如果您有触摸屏Win10设备,您可以在带有多个文本框的简单WPF应用程序上轻松测试它 所以,我决定自己控制键盘,现在它工作得很好,自动键盘显示选项被禁用。但是,我不能确保每个用户在Windows 10上都禁用此选项,所以我想让Windows“忽略”我的

我的目标是在用户单击文本框时显示Windows10屏幕键盘

如果在“设置”中启用了特定选项,则Windows 10可以选择自动显示其屏幕键盘,即使在平板电脑模式之外

然而,在使用WPF应用程序时,这种逻辑似乎存在一些严重的问题-闪烁、根本不显示等。如果您有触摸屏Win10设备,您可以在带有多个文本框的简单WPF应用程序上轻松测试它

所以,我决定自己控制键盘,现在它工作得很好,自动键盘显示选项被禁用。但是,我不能确保每个用户在Windows 10上都禁用此选项,所以我想让Windows“忽略”我的WPF应用程序中的文本框,这样只有应用程序本身控制键盘的可见性

所以,我的问题是——有没有办法让Windows忽略对特定文本框的关注

注:如果没有明确的方法,我将非常感谢Windows如何实际获取有关正在编辑的WPF文本框的信息的任何提示,这样我就可以使用我自己的文本框实现,而不会触发这种逻辑

更新:


似乎,可以通过使用
FrameworkElementAutomationPeer
而不是
TextBoxAutomationPeer
TextBox
的自定义实现中删除键盘用来发现文本框是焦点的“钩子”,但这破坏了在自动化中使用此文本框的可能性(我不喜欢).

我没有可测试的触摸屏设备,但从我的快速鼠标点击测试中,我看到有一个文本框。Focusable=false

这使得它无法获得键盘输入,因此可以在文本框上放置另一种方法,如:

txtBoxTestFocus\鼠标向下或txtBoxTestFocus\触地,然后可以设置txtBoxTestFocus.Focusable=true


不确定这是否有帮助,因为我无法测试它。抱歉,如果您不想牺牲自动化UI的可能性,这似乎是唯一的方法。您可以通过为某些鼠标事件(例如,
PreviewMouseDownEvent
)注册类处理程序,并以编程方式聚焦单击的对象,来处理输入不可聚焦文本框的可能性。