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;
}

Будем очень благодарны любой помощи.


person Scott Baker    schedule 13.04.2015    source источник


Ответы (1)


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

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

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

person erdomke    schedule 22.12.2015