由于Microsoft不允许替换系统的虚拟键盘,因此我开发了一个自定义虚拟键盘作为UserControl
,以便在我的Windows应用商店应用中使用。我目前的问题是,每当用户点击TextBox
时,总是弹出默认的虚拟键盘。
从昨天开始,我一直在寻找解决这个问题的方法,但我无法解决。我几乎成功的尝试是开发一个带有透明Canvas
的TextBox
。当用户点击Canvas
时,焦点将以编程方式转移到TextBox
,我的自定义虚拟键盘被实例化。但是,如果没有物理键盘连接到平板电脑,系统键盘也会使用此方法弹出(通过我的自定义键盘)。
我想使用 TextBox
的主要原因是因为这样我可以保留和使用已经实现的插入符号函数,但这不是强制性的。
任何输入都会有所帮助,谢谢。
你可以做几件事:
当键盘出现时,有一些事件,请检查这些事件,看看是否可以阻止它。
您可以实现一个自定义文本框来抑制 OnPointerPressed 事件,以便文本框永远不会聚焦。您还需要做一些其他事情(例如通过设置IsTabStop=false
来防止 Tab 键进入它以提供焦点。
您可以从头开始实现自定义文本框(其外观和行为类似于文本框)。
我认为第二种选择是最简单,最有趣的选择。
编辑:还可以通过绑定为文本框提供一个DependencyProperty
,将当前Page
设置为该。在文本框的OnGotFocus
事件中,将视觉状态设置为"自定义焦点"(或任何你称之为它的内容),然后调用 Page.Focus()
;