wpf DocumentViewer - получить ITextPointer с помощью GlyphRun и наоборот

Просто интересно, пытался ли кто-нибудь взломать WPF DocumentViewer , чтобы сделать его более полезным. Я потратил почти неделю, пытаясь создать более мощный API для этого элемента управления на основе его методов, которые я извлекаю с помощью отражения.

Все знают, как получить выделенный текст из программы просмотра документов через отражение, но моя задача сложнее. Выбранный текст имеет свойства End и Start , которые возвращают ITextPointers . Также у меня есть коллекция GlyphRuns , извлеченных с использованием этого кода . И теперь, наконец, я хочу узнать, какой GlyphRun содержит начало выделения.

Итак, я хочу знать, как преобразовать ITextPointers в GlyphRuns и наоборот. Я понимаю, что у них отношения не 1: 1. Этот элемент управления с закрытым API и прошлой неделей, проведенной в Reflector, не дает мне спокойно спать. Я надеюсь, что, может быть, кто-то пробовал это сделать раньше или видел образцы кода и сможет провести меня через эти джунгли.

35
задан Snowbear 3 March 2011 в 08:48
поделиться