Если вам предоставляется только указатель и длина (или EndIndex) определенного текста, как вы это делаете в WPF-версии RichTextBox?
Это очень удобно в текстовом поле, так как вы можете вызвать Textbox.Select(startIndex, Length), но я не вижу ничего эквивалентного в RTB.
Изменить: я нашел ответ на выбор
internal string Select(RichTextBox rtb, int index, int length)
{
TextRange textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
if (textRange.Text.Length >= (index + length))
{
TextPointer start = textRange.Start.GetPositionAtOffset(index, LogicalDirection.Forward);
TextPointer end = textRange.Start.GetPositionAtOffset(index + length, LogicalDirection.Backward);
rtb.Selection.Select(start, end);
}
return rtb.Selection.Text;
}
Однако, когда я пытаюсь выделить строку после того, как был сделан выбор:
rtb.Selection.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(Colors.LightBlue));
Функция подсветки работает только при первой попытке и разрывается после второй попытки. Кто-нибудь знает причину этого?