Подтвердить что ты не робот

Wpf DocumentViewer - получить ITextPointer от GlyphRun и наоборот

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

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

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

4b9b3361

Ответ 1

Я бы рекомендовал отказаться от этого подхода. Делая много частных размышлений, подобных этому, вы не должны основывать производственный код на своем очень хрупком и прямо запрещенном в некоторых контекстах. Честно говоря, вам лучше найти сторонний элемент управления, который соответствует вашим потребностям, например www.infragistics.com

Или, если это не вариант, вы, вероятно, можете создать свой собственный элемент управления в течение времени, в течение которого вам придется погрузиться в работу.