2010-03-22 89 views
3

我需要将段落格式应用于富文本框中的选择。我的RTB的行为与StackOverflow上的富文本框的行为相同 - 用户可以在RTB中键入文本,但也可以输入代码块。 RTB将对代码块应用非常简单的格式 - 它将更改字体并为整个块应用背景颜色,类似于您在下面的代码块中看到的内容。在WPF RichTextBox中的段落格式?

更改字体非常简单:

var textRange = new TextRange(rtb.Selection.Start, rtb.Selection.End); 
textRange.ApplyPropertyValue(TextElement.FontFamilyProperty, "Consolas"); 
textRange.ApplyPropertyValue(TextElement.FontSizeProperty, 10D); 

现在我需要应用一些段落级格式。我需要将段落边距设置为0,所以我没有在代码行之间留下空行,我需要设置段落背景颜色。这是我的问题:我不知道如何从选择中获取段落元素,以便我可以应用格式。

有什么建议吗?如何应用边距和背景属性的例子会非常有帮助。谢谢!

回答

3

哦,那是容易..通过这个答案带着一点点更多的研究:

var textRange = new TextRange(TextBox.Selection.Start, TextBox.Selection.End); 
textRange.ApplyPropertyValue(TextElement.FontFamilyProperty, "Consolas"); 
textRange.ApplyPropertyValue(TextElement.FontSizeProperty, 10D); 
textRange.ApplyPropertyValue(Paragraph.MarginProperty, new Thickness(0)); 
textRange.ApplyPropertyValue(Paragraph.BackgroundProperty, "LightSteelBlue"); 

唯一的限制是高亮仍然只能一直延伸文本,而不是向右侧的控制。我会把这个问题公开几天;如果有人能告诉我如何将背景延伸到控件的右边缘,我会接受你对这个问题的回答。

+0

我试着设置每个上述选择块和部分对象的背景属性。与设置段落背景相同的结果 – 2010-03-22 20:28:42

+0

您是否找到将背景应用于整条线的解决方案?我也需要这个功能。 – Alireza 2013-02-07 17:39:12