我正在尝试修改this example(特别是TouchedTextBlock
控件)以进行文本编辑UserControl
。不幸的是,样本远远不够。它唯一允许的是当用户点击控件时软键盘出现:键盘不提供字典建议作为用户类型。此外,它没有说明我的控件应该如何接收和处理编辑命令;例如,如果用户选择键盘建议的单词,我的控件如何获取单词并将其添加到文本中?我添加了调试代码来跟踪方法调用,似乎没有调用实现的ITextProvider,IValueProvider和ITextRangeProvider。所以我的问题是:
1)何时调用上述接口中的方法?任何人都可以解释UI自动化机制的工作流程/交互吗?
我对MSDN上的很多文章感到困惑。我粗略的理解是,键盘就像是UI自动化框架中的“客户端”(在与应用程序不同的进程中执行),AutomationPeer
就像“服务器”。在这个例子中,键盘客户端根本不与我的AutomationPeer
进行交互;它只通过提供关键事件与整个应用程序进行交互,同时它应该与定制的AutomationPeer
进行专门的交互。我希望以下工作流程:
Focus
OnCreateAutomationPeer
来创建AutomationPeer
的自定义实现Text
模式且文本不是只读,则显示软件键盘AutomationPeer
方法让用户在我的控件中插入字符和单词(以及退格键,输入......)。 / LI>
2)是否有示例说明如何提供建议?
请不要建议我使用内置控件,例如TextBox
或RichEditBox
:如果符合我的需要,我会使用它们。