的WPF RichtTextBox有滚动的方法:WPF RichTextBox的滚动到TextPointer
RichTextBox.ScrollToVerticalOffset(double)
我想以这样的方式滚动,即一个cerctain范围或至少它开始进入视野。如何将TextPointer转换为有意义的方式?
的WPF RichtTextBox有滚动的方法:WPF RichTextBox的滚动到TextPointer
RichTextBox.ScrollToVerticalOffset(double)
我想以这样的方式滚动,即一个cerctain范围或至少它开始进入视野。如何将TextPointer转换为有意义的方式?
看看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。
完美,谢谢。 –