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