WPF RichTextBox выделите TextPointer - PullRequest
       9

WPF RichTextBox выделите TextPointer

3 голосов
/ 02 августа 2011

WPF RichtTextBox имеет метод для прокрутки:

RichTextBox.ScrollToVerticalOffset(double)

Я хочу прокрутить таким образом, чтобы в поле зрения попал диапазон некоторого или хотя бы его начала. Как я могу преобразовать TextPointer в удвоенный смысл?

Ответы [ 3 ]

5 голосов
/ 03 августа 2011

Посмотрите на метод FrameworkElement.BringIntoView.Я использую что-то вроде этого:

public void Foo(FlowDocumentScrollViewer viewer) {
    TextPointer t = viewer.Selection.Start;
    FrameworkContentElement e = t.Parent as FrameworkContentElement;
    if (e != null)
         e.BringIntoView();
}
2 голосов
/ 30 сентября 2015

Используйте GetCharacterRect, чтобы получить позицию TextPointer в RichTextBox:

Rect r = textPointer.GetCharacterRect(LogicalDirection.Backward);
rtb.ScrollToVerticalOffset(r.Y);
0 голосов
/ 01 марта 2018

Так что, если вам интересно, почему BringIntoView() не работает, или он прокручивается в верхнюю часть вашего текстового поля, скорее всего, вы пытаетесь «отобразить» Inline, который содержит весь прокручиваемый текстовый контент - он «выводит на экран» эту строку, которая начинается с (как вы уже догадались) «начала» TextPosition сверху.

Решение - использовать ScrollToVerticalOffset() за ответ Мирослава .

...