Получение текста из AvalonEdit с помощью UIAutomation - PullRequest
1 голос
/ 17 июля 2011

Я работаю с UIAutomation и мне нужно получить содержимое элемента управления AvalonEdit в WPF. Я могу получить только элемент управления AvalonEdit как ControlType of Text:

var editors = app.FindAll(TreeScope.Descendants, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Text));

Это не поддерживается ...

var targetTextPattern = editor[0].GetCurrentPattern( TextPattern.Pattern) as TextPattern;

Кажется, я не могу найти способ извлечь из этого текстовое содержимое, это невозможно сделать при использовании ControlType.Text? Я также пытался использовать ControlType Edit & Document, но AvalonEdit, похоже, не поддерживает их.

Любая помощь оценивается. Спасибо!

1 Ответ

2 голосов
/ 19 июля 2011

После некоторого поиска исходного кода я обнаружил, что AvalonEdit.TextEditor поддерживает UIAutomation. Это полные шаги, необходимые для его использования.

Сначала используйте ControlType.Custom, чтобы найти TextEditor:

allEditors = app.FindAll(TreeScope.Descendants, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Custom));

Класс TextEditorAutomationPeer реализует IValueProvider, поэтому для получения текста из TextEditor с помощью UIAutomation используйте ValuePattern следующим образом:

var editorValuePattern = allEditors[0].GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
var text = editorValuePattern.Current.Value;

Это сработало для меня:)

...