Wpf DocumentViewer - получить ITextPointer от GlyphRun и наоборот
Просто интересно, пытался ли кто-нибудь попытаться взломать WPF DocumentViewer
, чтобы сделать его более полезным. Я потратил почти неделю на создание более мощного API для этого элемента управления на основе его методов, которые я извлекаю с помощью отражения.
Каждый знает, как получить выделенный текст из средства просмотра документов через отражение, но моя задача сложнее. Выбранный текст имеет свойства End
и Start
, которые возвращают ITextPointers
. Также у меня есть коллекция GlyphRuns, извлеченная с помощью этого кода. И теперь, наконец, я хочу узнать, какой GlyphRun
содержит начало выбора.
Итак, я хочу знать, как преобразовать ITextPointers
в GlyphRuns
и наоборот. Я понимаю, что у них нет отношения 1:1. Этот контроль с закрытым API и прошлой неделей, проведенный в Reflector, не позволяет мне хорошо спать. Надеюсь, что кто-то попытался сделать это раньше или увидеть образцы кода и сможет провести меня через эти джунгли.
Ответы
Ответ 1
Я бы рекомендовал отказаться от этого подхода. Делая много частных размышлений, подобных этому, вы не должны основывать производственный код на своем очень хрупком и прямо запрещенном в некоторых контекстах. Честно говоря, вам лучше найти сторонний элемент управления, который соответствует вашим потребностям, например www.infragistics.com
Или, если это не вариант, вы, вероятно, можете создать свой собственный элемент управления в течение времени, в течение которого вам придется погрузиться в работу.