3

リッチテキストボックスの選択範囲に段落書式を適用する必要があります。私のRTBは、StackOverflowのリッチテキストボックスと同じように動作します。ユーザーはRTBにテキストを入力できますが、コードブロックを入力することもできます。RTBは、コードブロックに非常に単純なフォーマットを適用します。以下のコードブロックに表示されているように、フォントを変更し、ブロック全体に背景色を適用します。

フォントの変更は非常に簡単です。

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

次に、段落レベルの書式を適用する必要があります。段落の余白を0に設定する必要があるため、コード行の間に空白行が表示されず、段落の背景色を設定する必要があります。これが私の問題です。選択範囲から段落要素を取得する方法がわからないため、書式設定を適用できます。

助言がありますか?MarginプロパティとBackgroundプロパティを適用する方法の例は、非常に役立ちます。ありがとう!

4

1 に答える 1

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");

唯一の制限は、強調表示がコントロールの右側ではなく、テキストまでしか拡張されないことです。この質問は数日間開いたままにしておきます。誰かが背景をコントロールの右端に拡張する方法を教えてくれれば、この質問に対するあなたの答えを受け入れます。

于 2010-03-22T16:29:49.220 に答える