我正在以编程方式创建FlowDocument,然后将其翻译为RTF,以便用户可以在RTF框中进行编辑。我无法弄清楚如何在FlowDocument中插入一条水平线,该水平线将显示在编辑框(以及随后呈现的PDF)的整个宽度上。

我发现此线程(据称)显示了如何在XAML中准确地执行我想要的操作:

Simple (I think) Horizontal Line in WPF?

还有这个:

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/bcd334c7-8e2b-4e59-a344-4376b30cf847/

我试图以编程方式复制此代码,如下所示:

        Line pLine = new Line();
        pLine.Stretch = Stretch.Fill;
        pLine.Stroke = Brushes.Black;
        pLine.X2 = 1;
        para.Inlines.Add( pLine );


但是,这最终在结果RTF编辑框中什么也不显示。富文本格式的其余部分在那里。根本就没有线。

我还尝试创建一个表格并将想要插入的文本插入水平线之后的单元格中。然后,我为表格的顶部设置了一个自定义边框。这给了我一条水平线,但是它并没有一直贯穿整个屏幕(在转换为RTF并显示在RTF编辑框中之后),并且在将其渲染为PDF之后也完全没有显示。

我求助于仅插入60个下划线(_)字符和LineBreak的完整技巧。那“可行”,但是很烂。有人可以告诉我如何正确执行此操作吗?

最佳答案

我正在使用这个小怪兽在RichTextBox中的当前光标位置插入一行。

var ruler = new Line { X1 = 0, Y1 = 0, X2 = 1000, Y2 = 0, Stroke = new SolidColorBrush(Colors.Black), StrokeThickness = 2 };

new InlineUIContainer(ruler, richtextbox.CaretPosition.GetInsertionPosition(LogicalDirection.Forward));


我认为您忘记设置StrokeThickness
即使您设置Stretch.Fill,您的线路也仅是一个与设备无关的单元。

关于c# - 以编程方式在FlowDocument中创建水平线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15697244/

10-12 04:04