Dokument WPF „zmiana przypadku”

Wdrażam funkcję „zmiany przypadku” dla mojego RichTextBox, jak słowo ma Shift + F3. Wszystko, co robi, to przełączanie się między niższym-> górnym-> tytułem, co jest bardzo proste, gdy uzyskam dostęp do łańcucha, którego potrzebuję.

Moje pytanie brzmi: jak zmienić (i znaleźć go w pierwszej kolejności) ciąg w flowdocument bez utraty jakichkolwiek osadzonych elementów (utrata formatowania nie jest problemem), które mogą być zawarte w ciągu. Podobnie jak słowo, potrzebuję tej funkcji dla 2 przypadków:

1) Tekst zaznaczony myszą. Próbowałem po prostu

<code>this.Selection.Text = newText;
</code>

Ale to oczywiście utraciło moje wbudowane elementy.

2) Ostatnie słowo przed pozycją karetki. Dowolny element nietekstowy jest separatorem słów, jednak może to być jedno słowo

<code>"He<weird formatting begin>ll<weird formatting end>o".
</code>

questionAnswers(1)

yourAnswerToTheQuestion