Сбросить форматирование вместо существующего объекта FlowDocument / Paragraph - PullRequest
0 голосов
/ 27 декабря 2011

Я искал в Интернете все выше и ниже, поэтому любая помощь, которую может оказать сообщество, высоко ценится.

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

Думаю ли я об этом неправильно?

Этот ответ почти доставит меня туда.

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

1 Ответ

0 голосов
/ 07 марта 2012

Важно знать, что конструктор 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);
...