Как приостановить отмену стека Авалонедит? - PullRequest
5 голосов
/ 28 сентября 2011
  • Я выполняю масштабное изменение текста в редакторе
  • Я не могу (или очень сложно) определить, когда начинаются изменения (текстовый обмен освобождается прокруткой)
  • Я не хочу отменять изменения

по этой причине я хочу приостановить прослушивание стека (или сделать щелчок после любого текстового обмена). но

  • стек не предлагает метода для выталкивания элемента стека без выполнения отмены
  • Я не хочу полностью очистить стек
  • нет способа отсоединить стек от текстового документа
  • нет способа приостановить прослушивание

знаете ли вы возможность решить эту проблему?

1 Ответ

8 голосов
/ 28 сентября 2011

Вы хотите, чтобы стек отмены не записывал некоторые изменения, но также не хотите очищать его?Это означало бы, что содержимое стека отмены может быть несовместимо с содержимым документа - когда пользователь затем нажимает отмену, это может привести к сбою или изменению текста, отличного от ожидаемого расположения.

По этой причине AvalonEditне поддерживает эту операцию.Мы очень стараемся избегать противоречивых стеков отмены - например, повторные входящие обновления (изменение документа в обработчике события TextDocument.Changed) запрещены.

Самое близкое к отключению стека отмены вы можете получитьset

document.UndoStack.SizeLimit = 0;

Это эффективно отключит прослушивание изменений, но также очистит стек отмены.

В качестве примечания: возможно «отсоединить» стек отмены (установив document.UndoStack в другой стек отмены), но это также очистит старый стек отмены.

...