Свойство TextEditor.Text
имеет побочный эффект очистки стека отмены (как и в случае с обычным WPF TextBox
). Очистка стека отмены возможна только в том случае, если нет открытой группы отмены.
Если вы не намеревались очистить стопку отмены, используйте вместо этого методы на textEditor.Document
, чтобы изменить документ. Вы захотите избежать замены всего текста, потому что это также сбросит позицию выбора и каретки (в конце концов, AvalonEdit не может знать, как ваш новый текст связан со старым текстом).
Если вы хотите очистить стопку отмены (например, вы переключите представление на другой документ), вам нужно выяснить, почему группа отмены открыта. Скорее всего, ваш код запускается из обработчика события, которое вызывается, пока группа отмены все еще открыта (например, document.TextChanged
). Вместо этого вы можете переключиться на другое событие (например, document.UpdateFinished
вызывается после того, как группа отмены была закрыто).
Если все, что вы хотите сделать, это прописной текст, как это подводится, то лучше изменить текст, прежде чем он будет добавлен к документу: обрабатывать TextArea.TextEntering
событие, чтобы отменить любой вход строчной (комплект e.Handled = true;
) и вместо этого вызовите TextArea.PerformTextInput()
, чтобы повторить процесс ввода текста с соответствующим текстом верхнего регистра.
Для копирования-вставки вы можете обрабатывать прилагаемые DataObject.PastingEvent
и изменять данные для вставки.