获取WPF RichTextBox以在文本上绘制水平线

时间:2013-01-16 02:55:04

标签: c# .net wpf richtextbox

说我有一个给定的TextRange range碰巧有这个文本-----------------(在它自己的行上。)

每当我看到那个文本(而不是只有15个破折号)时,我想绘制一条实线。

但是,当我保存它时,我需要留下破折号(当其他纯文本查看器加载它时)。

我发现如何在RichTextBox中绘制一条线:

var line = new Line {X1 = 10, X2 = 200, Y1 = 5, Y2 = 5, 
var paragraph = (Paragraph) MyRichTextBox.Document.Blocks.FirstBlock;
paragraph.Inlines.Add(line);

但是这只是在段落中的最后一个内联之后绘制的。

所以,我的问题是:

我如何画画以便我的UIElement没有文字换行(这样我可以覆盖破折号)?

这是否可以使用WPF RichTextBox?

2 个答案:

答案 0 :(得分:0)

你可以使用“TextDecorations.Strikethrough”吗。

TextRange range = new TextRange(RichTextBox.Selection.Start, RichTextBox.Selection.End);

TextDecorationCollection tdc = (TextDecorationCollection)RichTextBox.Selection.GetPropertyValue(Inline.TextDecorationsProperty);
if (!tdc.Equals(TextDecorations.Strikethrough))
{
    tdc = TextDecorations.Strikethrough;
}
range.ApplyPropertyValue(Inline.TextDecorationsProperty, tdc);

答案 1 :(得分:0)

我认为您必须从段落中删除Inline并将其替换为Line元素。在这种情况下,您必须在保存时将“{ - 1}}元素替换为”-----“。

Line

我使用RTF文档对此进行了测试,该文档在独立段落(< enter>)中有“-----”行,在其他段落中有换行符(< shift-enter>)。