5
  • 我在编辑器上进行了大量的文本更改
  • 我无法(或很难)确定更改何时开始结束(通过滚动释放 textchange)
  • 我不希望能够撤消更改

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

  • 堆栈不提供在不执行撤消的情况下弹出堆栈元素的方法
  • 我不想完全清除堆栈
  • 没有方法可以从文本文档中分离堆栈
  • 没有办法暂停收听

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

4

1 回答 1

9

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

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

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

document.UndoStack.SizeLimit = 0;

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

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

于 2011-09-28T16:59:38.453 回答