我们开始在
Windows 8中创建一个WPF触摸应用程序,最近迁移到Windows 10.我们实现的一个功能是在TextBox接收到焦点时打开Windows键盘.在Windows 8中,可以通过设置注册表设置EdgeTargetDockedState并启动TabTip进程来将键盘停靠在底部.
string path = @"C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe"; var info = new ProcessStartInfo(path); info.WindowStyle = ProcessWindowStyle.Maximized; var p = new Process(); p.StartInfo = info; p.Start();
然而,Windows 10键盘似乎没有与Windows 8相同的Dock行为.键盘现在覆盖任何最大化的窗口,隐藏任何应用程序的底部.只有未最大化的窗口被调整为适合剩余空间.
> https://superuser.com/questions/951841/windows-10-touch-keyboard-doesnt-dock-or-maximize-at-the-bottom-of-the-screen
> http://answers.microsoft.com/en-us/windows/forum/windows_10-desktop/windows-10-touch-keyboard-doesnt-dock/3c253400-568f-4e89-a253-0d7a747b5b63
Windows 10键盘可以通过编程方式停靠在最大化的窗口吗?
解决方法
我开放自己的项目,使所有关于WPT应用程序中的TabTip集成的功能自动化.
你可以在nuget获得它,之后你需要的是一个简单的配置在你的应用程序启动逻辑:
TabTipAutomation.BindTo<TextBox>();
您可以将TabTip自动化逻辑绑定到任何UIElement.当任何这样的元素将获得焦点时,虚拟键盘将打开,当元素失去焦点时,它将关闭.不仅如此,TabTipAutomation会将UIElement(或Window)移动到视图中,这样TabTip就不会阻止对焦元素.
欲了解更多信息,请参阅project site.
澄清:如果你将使用这个包,TabTip将不会被停靠,但你的UI将会在视图中,我猜这是你想要实现的.