private void UndoCmdExecuted(object sender, ExecutedRoutedEventArgs e) { var caretIndex = txtDocument.CaretIndex; var undoOp = DocumentState.Undo(ref caretIndex); UpdateDocumentTextFromState(); txtDocument.CaretIndex = caretIndex; SendOperation(undoOp); e.Handled = true; }