2

プログラムで FlowDocument を作成し、それをリッチ テキストに変換して、ユーザーがリッチ テキスト ボックスで編集できるようにしています。編集ボックス (およびその後のレンダリングされた PDF) の幅全体に表示される水平線を FlowDocument に挿入する方法がわかりません。

XAMLで、私がやりたいことを正確に行う方法を(伝えられるところでは)示しているこのスレッドを見つけました:

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 個のアンダースコア ('_') 文字と改行を挿入するだけの完全なハックに頼りました。それは「うまくいく」が、それはひどい。誰かがこれを正しく行う方法を教えてもらえますか?

4

2 に答える 2

1

この小さなモンスターを使用して、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デバイスに依存しないユニットの長さは 1 つだけです。

于 2013-05-16T10:19:38.290 に答える