private void MoveCaret(int oldIndex, int newIndex)
{
// see FormulaViewer_OnLoaded
if (!IsLoaded) return;
if (oldIndex == newIndex) return;
if (oldIndex != -1)
{
var element = Children.ElementAtOrDefault(newIndex);
if (element == Caret) return;
if (oldIndex != -1) Children.RemoveAt(oldIndex);
}
Children.Insert(newIndex, Caret);
}