在XAML自定义控件中实现AutomationPeer支持带有字典建议的文本模式

时间:2015-06-27 02:14:43

标签: xaml c++-cx microsoft-ui-automation

我正在尝试修改this example(特别是TouchedTextBlock控件)以进行文本编辑UserControl。不幸的是,样本远远不够。它唯一允许的是当用户点击控件时软键盘出现:键盘不提供字典建议作为用户类型。此外,它没有说明我的控件应该如何接收和处理编辑命令;例如,如果用户选择键盘建议的单词,我的控件如何获取单词并将其添加到文本中?我添加了调试代码来跟踪方法调用,似乎没有调用实现的ITextProviderIValueProviderITextRangeProvider。所以我的问题是:

1)何时调用上述接口中的方法?任何人都可以解释UI自动化机制的工作流程/交互吗?

我对MSDN上的很多文章感到困惑。我粗略的理解是,键盘就像是UI自动化框架中的“客户端”(在与应用程序不同的进程中执行),AutomationPeer就像“服务器”。在这个例子中,键盘客户端根本不与我的AutomationPeer进行交互;它只通过提供关键事件与整个应用程序进行交互,同时它应该与定制的AutomationPeer进行专门的交互。我希望以下工作流程:

  • 用户点按控件
  • 通过调用Focus
  • 来控制增益焦点
  • 获得焦点后,框架会调用OnCreateAutomationPeer来创建AutomationPeer的自定义实现
  • 框架确定模式和控件类型,如果检测到Text模式且文本不是只读,则显示软件键盘
  • 示例中真正发生的事情:键盘似乎为整个应用程序提供原始键事件。  我的期望:键盘(远程)'调用'我的AutomationPeer方法让用户在我的控件中插入字符和单词(以及退格键,输入......)。 / LI>

2)是否有示例说明如何提供建议?

请不要建议我使用内置控件,例如TextBoxRichEditBox:如果符合我的需要,我会使用它们。

0 个答案:

没有答案