【问题标题】:Replacing Windows 7+ onscreen keyboard in WPF在 WPF 中替换 Windows 7+ 屏幕键盘
【发布时间】:2015-04-27 19:50:13
【问题描述】:

我维护/开发一个通常用于触摸屏的 C&C 应用程序。大多数文本框都需要数字输入,因此大多数普通键盘是没有意义的。我的老板要我为这些盒子制作一个没有键盘的数字键盘。 (我们也有其他字母数字框。)用户可以选择一个复选框来指示是否需要屏幕键盘。

我从How to disable the little touch-keyboard on Windows edit controls 那里学到了如何确保标准 Windows 键盘不会出现在我的应用程序中。 注册表很丑,但至少它可以让我与每个人都相处融洽。

由于应用程序已经构建,我决定考虑使用资源字典来修改我的文本框;见Is it possible to set code behind a resource dictionary in WPF for event handling?。根据 WPF 的设计,cmets 显然也很丑陋。

现在我需要告诉我的代码后面的键盘窗口(或其他控件)在哪里。这听起来像是一个 XAML 属性 - 依赖属性。不幸的是,ResourceDictionary 没有扩展DependencyObject,所以这种技术似乎行不通。

根据WPF: Specific input textboxes (for phone numbers and such),如果点击会召唤一个只包含允许字符的键盘,this 之类的东西就会起作用。实际上,那将是绝对完美。如果只有 this 是 WPF 的一部分并因此与键盘集成。

但也许我的部分方法是错误的?如何获得选择“数字框”时出现的数字键盘?我真的不想在每个涉及文本框的 XAML 页面上复制(而不是引用)资源字典。

附:问题格式如何?

【问题讨论】:

  • 你见过thisthis,当然还有this吗?
  • @WouterHuysentruit 不,我没有。谢谢!现在来研究它们...

标签: c# wpf xaml on-screen-keyboard


【解决方案1】:

我认为你是在倒退。我还必须编写自己的键盘控件(进行了与此处无关的各种改进),我这样做的方式是编写一个新的文本框控件,它允许我描述我想要的键盘类型——数字或标准(再次,以及各种其他属性)。

现在控件本身知道它被触摸的位置(是的,我知道),并且它可以包含绘制自身和弹出键盘页面所需的资源。您无需担心任何事情,只需在页面上实际使用它即可。

【讨论】:

  • 这是我的第一个想法,但听起来工作量要大得多。无论哪种方式,我都需要一个自定义的屏幕键盘;我不想在其中添加文本框。
  • 这不是很多工作,只需从 Wpf 文本框派生出来,您就已经有了基础。剩下的就是连接你的GotFocus(我忘记了确切的拼写)和/或PreviewMouseUp(以及触摸等效事件)以触发弹出窗口显示。
猜你喜欢
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 2012-12-17
  • 2013-06-10
  • 2016-02-13
  • 2014-01-27
相关资源
最近更新 更多