You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XamRichTextEditor控件中滚动至光标位置或选中区域?

在XamRichTextEditor中滚动至光标/选中区域/指定位置的解决方案

滚动至当前光标位置

先确保编辑器获得焦点,再调用内置的BringCaretIntoView方法,就能自动将光标滚动到视图可见范围内:

// 替换为你的XamRichTextEditor实例名
richTextEditor.Focus();
richTextEditor.BringCaretIntoView();

如果需要控制光标在视图中的对齐位置(比如居中、顶部),可以传入VerticalAlignment参数:

richTextEditor.BringCaretIntoView(VerticalAlignment.Center);

滚动至选中区域

直接调用ScrollToSelection方法,控件会自动将选中的文本区域滚动到视图内:

richTextEditor.ScrollToSelection();

同样支持指定对齐方式:

richTextEditor.ScrollToSelection(VerticalAlignment.Top);

滚动至任意指定位置

如果你有明确的目标文本位置(比如通过偏移量获取的TextPosition),可以使用ScrollToPosition方法:

// 示例:获取文本开头第100个字符的位置
TextPosition targetPos = richTextEditor.Document.ContentStart.GetPositionAtOffset(100);
if (targetPos != null)
{
    richTextEditor.ScrollToPosition(targetPos, VerticalAlignment.Center);
}

如果要滚动到特定段落或元素,也可以获取对应的文档元素后调用BringIntoView:

// 示例:滚动到第一个段落
var firstPara = richTextEditor.Document.Blocks.FirstOrDefault() as Paragraph;
if (firstPara != null)
{
    firstPara.BringIntoView();
}

注意事项

如果设置光标/选中范围后立即调用滚动方法不生效,大概率是UI线程还没完成光标状态更新,此时可以通过Dispatcher延迟执行:

Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
    richTextEditor.BringCaretIntoView();
}));

内容的提问来源于stack exchange,提问作者marc wellman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 09:51:04