Я не уверен, как получить позицию каретки (хотя это БОЛЬШОЙ вопрос, и я хотел бы узнать, как), но я знаю, что RichTextBox не может содержать дочерние элементы.
Я предполагаю, что решение будет в том же духе: поместить RichTextBox и ListBox в Canvas и расположить ListBox в месте каретки каждый раз, когда изменяется текст RichTextBox.Я не знаю, как восстановить положение каретки.: /