重置格式以代替现有的流文档/段落对象

本文关键字:文档 对象 段落 格式 | 更新日期: 2023-09-27 18:18:54

我已经在互联网上搜索了高低,所以社区可以提供的任何帮助都非常感谢。

有没有办法从代码隐藏中更改甚至重置RichTextBoxParagraph对象中的所有格式(粗体、颜色等(? 我有一个RichTextBox,我正在对行(每行由Paragraph表示(应用语法和错误突出显示,我希望能够就地还原或更改格式,以便可以无缝地重新选择所选文本TextPointers。 例如,我希望能够像Visual Studio一样进行括号匹配,而无需用户将其插入符号显示在行的开头或结尾。

我是否以错误的方式思考这个问题?

这个答案几乎让我到达那里。

提前感谢!

重置格式以代替现有的流文档/段落对象

要知道的关键是 TextRange 构造函数将两个TextPointer对象作为开始和结束。这些对象不必以任何方式绑定到所选内容,并且它们具有GetPositionAtOffset等方法来在内容中移动。

下面是一些示例代码,用于重置用户插入符号所在段落中的字体系列、粗体和斜体,而无需更改所选内容:

var para = richTextBox.CaretPosition.Paragraph;
var range = new TextRange(para.ContentStart, para.ContentEnd);
range.ApplyPropertyValue(TextElement.FontFamilyProperty, "Calibri");
range.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Normal);
range.ApplyPropertyValue(TextElement.FontStyleProperty, FontStyles.Normal);