2011-12-27 2 views
0

Я искал Интернет высоко и низко, поэтому любая помощь, которую может оказать сообщество, очень ценится.Сброс форматирования вместо существующего объекта FlowDocument/Paragraph

Есть ли способ изменить и даже сбросить все форматирование (жирным шрифтом, цветами и т. Д.) В объекте Paragraph в пределах RichTextBox от кода позади? У меня есть RichTextBox, что я применяю синтаксис и подсвечивание ошибок к строкам (каждая строка представлена ​​Paragraph), и я хочу иметь возможность вернуть или изменить форматирование на месте, так что TextPointers в выбранный текст можно легко переустановить. Например, я хочу иметь возможность делать скобки, похожие на Visual Studio, без того, чтобы пользователь отображал свою позицию в начале или конце строки.

Я думаю об этом не так?

This answer almost gets me there.

Заранее спасибо!

ответ

0

Главное, чтобы знать, что конструктор TextRange принимает два объекта TextPointer как начало и конец. Эти объекты не обязательно должны быть привязаны к выбору, и у них есть методы, такие как GetPositionAtOffset для перемещения по содержимому.

Вот некоторые примеры кода, чтобы сбросить семейство шрифтов, жирный, курсив в пункте, где каретка пользователя есть без изменения выбора вообще:

var para = richTextBox.CaretPosition.Paragraph; 
var range = new TextRange(para.ContentStart, para.ContentEnd); 
range.ApplyPropertyValue(TextElement.FontFamilyProperty, "Calibri"); 
range.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Normal); 
range.ApplyPropertyValue(TextElement.FontStyleProperty, FontStyles.Normal);