wpf - 如何使 WPF 输入控件在触摸屏上获得焦点时显示虚拟键盘

标签 wpf wpf-controls touch

对于我们的 WPF 应用程序,当它在 上运行时触摸屏 (Surface Pro .etc),TextBox/PasswordBox控件无法显示 虚拟键盘当他们专注时。

在 WPF 中实现此功能的任何好方法?

更新:

我们最终想要实现的是这样的:

如果用户在 PC 上运行应用程序 ,我们不关心这个功能,这意味着用户是否有物理键盘,我们什么都不做,就像在 PC 上运行的普通 WPF 应用程序一样。

如果用户在 Surface Pro 上运行 ,当他点击 TextBox ,内置的虚拟键盘可以显示出来,而且应该是人性化的,比如键盘永远不会掩盖输入元素。

更新 2:

那么,WPF 不能轻易设置一些属性来实现这个功能吗?在我看来,这个功能应该是WPF内置的,我不明白为什么找不到简单的方法来实现。

最佳答案

尝试这个,

首先检查物理键盘是否存在:

KeyboardCapabilities keyboardCapabilities = new Windows.Devices.Input.KeyboardCapabilities();
return  keyboardCapabilities.KeyboardPresent != 0 ? true : false;

如果找不到物理键盘,请使用 Windows 内置的虚拟键盘:
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.System) + Path.DirectorySeparatorChar + "osk.exe");

从这里得到帮助:
link 1
link 2

关于wpf - 如何使 WPF 输入控件在触摸屏上获得焦点时显示虚拟键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19085931/

相关文章:

c# - Dispatcher' 不包含 'InvokeAsync' 的定义并且没有扩展方法 'InvokeAsync'

c# - x :Bind to DependencyProperty not working (classic Binding works fine)

WPF XAML 命名空间问题

c# - 在触发器中的父 Content Presenter 上设置 ZIndex

wpf - 在 wpf 中创建 SelectionChangedEventArgs 的实例

ios - 使用后从overlay UIView转发触摸事件到下方的UIScrollView

c# - 如何编写与 ViewModel 类绑定(bind)的嵌套类?

vb.net - VB.NET中的静态构造函数

iphone - iPhone 的 cocos2D 和触摸检测问题

javascript - 在不禁用 IE10 中的浏览器交互的情况下触发 MSPointerUp 事件