У меня есть расширенное текстовое поле, которое я позволяю пользователю выделять текст. Загружаемый текст поступает из простого простого текстового файла. Но мне нужно сохранить абсолютную начальную и конечную позиции символов (относительно начала документа) выделенного текста, чтобы при сохранении его можно было перезагрузить с выделением.
Пока я могу сделать это, чтобы применить подсветку
private void textBox_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
HighlightWordInTextBox(this.textBox, this.textBox.Selection.ToString(), new SolidColorBrush(Colors.Yellow));
}
public void HighlightWordInTextBox(RichTextBox textbox, string word, SolidColorBrush color)
{
TextRange tr = new TextRange(this.textBox.Selection.Start, this.textBox.Selection.End);
tr.ApplyPropertyValue(TextElement.BackgroundProperty, color);
}
Но я не вижу где-нибудь внутри объектов «Начало» или «Конец выделения» ничего, что обеспечивало бы положение символа? Почти все методы возвращают другой TextPointer - но как получить позицию символа из TextPointer?
При условии, что весь текст загружен в один
this.textBox.Document.Blocks.Add(new Paragraph(new Run(fullText)));
EDIT:
В непосредственном окне при отладке я могу получить доступ к чему-то, называемому CharOffset и Offset, но не могу сделать это в исходном коде, это дает ошибку компиляции. Также эти свойства хотя и присутствуют при проверке объекта во время выполнения, но их нет в документации.

И все же ...
