AvalonEdit ::如何在UndoStack中保留当前状态?

时间:2015-04-13 23:09:02

标签: avalonedit

我目前正致力于在HTML WYSIWYG /"源代码"中实现AvalonEdit。并排编辑。当用户从设计模式(a RichTextBox)切换到源模式(AvalonEdit TextEditor)时,RTB中的XAML将转换为HTML并写入TextEditor.Document.Text属性。

这显然消除了撤销堆栈。

如何将文档的状态推送到UndoStack,以便用户可以"返回"?我尝试在RunUpdate() IDisposable中包装写操作,但这不起作用:

using (var _ = TextEditor.Document.RunUpdate())
{
   TextEditor.Document.Text = html;
}

非常感谢任何协助。

1 个答案:

答案 0 :(得分:0)

由于这是迟了几年,我不确定它是否直接回答了这个问题。但是,当前版本的AvalonEdit功能使得设置TextEditor.Text将清除撤消堆栈,但修改TextEditor.Document.Text则不会。 (这与提问者所观察到的行为背道而驰,因此可能在几年后发生了变化)。查看源代码,TextEditor.Document.Text似乎执行等同于

的代码
this.Replace(0, this.TextLength, value);

所以也许类似的调用甚至可以在旧版本的库中运行。