WPF RichTextBox滚动到TextPointer

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF RichTextBox滚动到TextPointer相关的知识,希望对你有一定的参考价值。

WPF RichtextBox有一个滚动方法:

RichTextBox.ScrollToVerticalOffset(double)

我想以这样的方式滚动,一个cerctain范围或至少它的开始进入视野。如何以有意义的方式将TextPointer转换为double?

答案

看看FrameworkElement.BringIntoView方法。我正在使用这样的东西:

public void Foo(FlowDocumentScrollViewer viewer) {
    TextPointer t = viewer.Selection.Start;
    FrameworkContentElement e = t.Parent as FrameworkContentElement;
    if (e != null)
         e.BringIntoView();
}
另一答案

使用GetCharacterRect获取RichTextBox中TextPointer的位置:

Rect r = textPointer.GetCharacterRect(LogicalDirection.Backward);
rtb.ScrollToVerticalOffset(r.Y);
另一答案

因此,如果您想知道为什么BringIntoView()不工作或滚动到您的文本框的顶部,这可能是因为您试图“引入”包含您的整个可滚动文本内容的Inline - 它“带来查看”这个内联,从(你猜对了)顶部的“开始”TextPosition开始。

解决方案是每ScrollToVerticalOffset()使用Miroslav's answer

以上是关于WPF RichTextBox滚动到TextPointer的主要内容,如果未能解决你的问题,请参考以下文章

WPF richTextBox 滚动到某项

WPF RichTextBox滚动条自动滚动实例文本自动滚动实例

wpf中如何让richtextbox的滚动条显示

RichTextBox 自动滚动到最后

如何使用实体框架将 RichTextBox 内容存储到 WPF 中的 SQLServer 数据库

RichTextBox 滚动到结尾