Recurso "alterar caso" do documento de fluxo do WPF

Eu estou implementando uma funcionalidade de "alterar caso" para o meu RichTextBox como palavra tem com Shift + F3. Tudo o que ele faz é alternar entre lower-> upper-> title case, que é muito simples assim que obtenho acesso à string que eu preciso.

Minha pergunta é, como alterar (e encontrar em primeiro lugar) uma seqüência de caracteres no fluxograma sem perder elementos incorporados (perder a formatação não é um problema) que pode estar contido na seqüência de caracteres. Igual à palavra, preciso dessa funcionalidade para dois casos:

1) Texto selecionado pelo mouse. Eu tentei simplesmente

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

Mas isso, claro, perdeu meus elementos incorporados.

2) A última palavra antes da posição do cursor. Qualquer elemento não textual é um delimitador de palavras, no entanto, uma palavra pode ser

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

questionAnswers(1)

yourAnswerToTheQuestion