重置格式代替现有的FlowDocument / Paragraph对象

时间:2011-12-27 00:27:56

标签: c# wpf formatting richtextbox paragraph

我在互联网上搜索得很高,所以社区可以提供的任何帮助都非常值得赞赏。

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

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

This answer almost gets me there.

提前致谢!

1 个答案:

答案 0 :(得分:0)

要知道的关键是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);