Установите определенный текст полужирным шрифтом в WPF RichTextBox



Я расширяю функциональность WPF Richtextbox. Я хочу, чтобы определенный текст выделялся жирным шрифтом, когда я его печатаю. Я смог выделить определенный текст жирным шрифтом, но текст, следующий за выделенным жирным шрифтом словом, также станет жирным шрифтом...



Вот пример моего кода:



private bool _Running = false;
void CustomRichTextBox_TextChange(object sender, TextChangedEventArgs e)
{
if(_Running)
return;
_Running = true;

//Logic to see if text detected

//Logic to get TextPointers

//Logic to get TextRange
var boldMe = new TextRange(textPointer1, textPointer2);
//Bold text
boldMe.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);

_Running = false;
}


Я хочу:



NOTBOLDED NOTBOLDED BOLDED NOTBOLDED



Но что я получаю:



NOTBOLDED NOTBOLDED BOLDED NOTBOLDED



* * Пожалуйста, обратите внимание, что он становится полужирным, пока напечатать.



Как сделать так, чтобы текст после выделенного жирным шрифтом слова также не стал выделенным жирным шрифтом?





Не дублировать вопрос, так как принятое решение для предоставленной ссылки предназначено для WinForms, а остальные-для предустановленного текста.

805   2  

2 ответов:

После нескольких тестов я нашел простое решение.

CaretPosition = CaretPosition.GetPositionAtOffset(0, LogicalDirection.Forward);

Этот набор курсора в правильной ориентации, предотвращая полужирный параметр от продолжения в пределах объекта Run.

if(textPointerEnd.GetNextInsertionPosition(LogicalDirection.Forward) == null)
    new Run("", textPointerEnd);

Это добавило бы объект Run в конец нового полужирного объекта, который был расположен в конце объекта Paragraph.

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

Comments

    Ничего не найдено.