如何暂停Avalonedit的Undostack?

时间:2011-09-28 11:05:11

标签: c# wpf stack avalonedit

  • 我在编辑器上执行了大量的文本更改
  • 我不能(或非常难)确定更改何时开始结束(通过滚动释放文本更改)
  • 我不想撤消更改

由于这个原因我想暂停监听堆栈(或者在任何textchange之后执行pop)。但

  • 如果不执行撤消
  • ,则堆栈不提供弹出stackelement的方法
  • 我不想完全清除堆栈
  • 没有方法可以从文本文档中分离堆栈
  • 没有暂停收听的方法
你知道解决这个问题的可能性吗?

1 个答案:

答案 0 :(得分:8)

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

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

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

document.UndoStack.SizeLimit = 0;

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

作为旁注:可以“分离”撤销堆栈(通过将document.UndoStack设置为另一个撤消堆栈),但这也将清除旧的撤消堆栈。