说我有一个给定的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?
答案 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>)。