如何暂停Avalonedit的Undostack

本文关键字:Avalonedit Undostack 暂停 何暂停 | 更新日期: 2023-09-27 18:09:51

  • 我对编辑器进行了大量的文本更改
  • 我无法(或很难(确定更改何时开始结束(文本更改是通过滚动释放的(
  • 我不想撤消更改

出于这个原因,我想暂停侦听堆栈(或者在任何文本更改后弹出(。但是

  • 堆栈不提供在不执行撤消的情况下弹出堆栈的方法
  • 我不想完全清空堆栈
  • 没有方法将堆栈从文本文档中分离出来
  • 没有办法暂停听力

你知道解决这个问题的可能性吗?

如何暂停Avalonedit的Undostack

您希望撤消堆栈不记录某些更改,但也不希望将其清除?这意味着撤消堆栈的内容可能与文档内容不一致——当用户按下撤消时,它可能会崩溃或更改预期位置以外的文本。

因此,AvalonEdit不支持此操作。我们非常努力地避免不一致的撤消堆栈——例如,不允许重入更新(在TextDocument.Changed事件处理程序中更改文档(。

最接近禁用撤消堆栈的方法是设置

document.UndoStack.SizeLimit = 0;

这将有效地禁用侦听更改,但也将清除撤消堆栈。

附带说明:可以"分离"撤消堆栈(通过将document.UndoStack设置为另一个撤消堆栈(,但这也将清除旧的撤消堆栈。