AvalonEdit:: Как сохранить текущее состояние в UndoStack? - программирование

AvalonEdit:: Как сохранить текущее состояние в UndoStack?

В настоящее время я работаю над реализацией AvalonEdit в редакторе HTML WYSIWYG/ "Исходный код". Когда пользователь переключается из режима разработки (a RichTextBox) в режим источника (AvalonEdit TextEditor), XAML из RTB преобразуется в HTML и записывается в свойство TextEditor.Document.Text.

Это, по-видимому, уничтожает стопку отмены.

Как я могу нажать состояние документа на UndoStack, чтобы пользователь мог "вернуться"? Я попытался обернуть операцию записи в RunUpdate() IDisposable, но это не сработало:

using (var _ = TextEditor.Document.RunUpdate())
{
   TextEditor.Document.Text = html;
}

Любая помощь будет принята с благодарностью.

4b9b3361

Ответ 1

Так как это несколько лет спустя, я не уверен, отвечает ли он на вопрос напрямую. Однако текущая версия AvalonEdit работает так, что установка TextEditor.Text очистит стопку отмены, но изменение TextEditor.Document.Text не будет. (Это противоречит поведению, наблюдаемому апеллятором, поэтому, возможно, это изменилось за пару лет с тех пор). Посмотрев исходный код, TextEditor.Document.Text, похоже, выполняет код, эквивалентный

this.Replace(0, this.TextLength, value);

возможно, подобный вызов будет работать даже в более старых версиях библиотеки.