Форматирование абзаца в WPF RichTextBox? - PullRequest
3 голосов
/ 22 марта 2010

Мне нужно применить форматирование абзаца к выделенному фрагменту в текстовом поле.Мой 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 был бы невероятно полезен.Спасибо!

1 Ответ

3 голосов
/ 22 марта 2010

О, это было легко .. Наткнулся на ответ с небольшим дополнительным исследованием:

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

Единственное ограничение заключается в том, что выделение по-прежнему распространяется только на текст, а не на правую сторону элемента управления. Я оставлю этот вопрос открытым на пару дней; если кто-нибудь подскажет, как расширить фон до правого края элемента управления, я приму ваш ответ на этот вопрос.

...