我目前正致力于在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;
}
非常感谢任何协助。
答案 0 :(得分:0)
由于这是迟了几年,我不确定它是否直接回答了这个问题。但是,当前版本的AvalonEdit功能使得设置TextEditor.Text
将清除撤消堆栈,但修改TextEditor.Document.Text
则不会。 (这与提问者所观察到的行为背道而驰,因此可能在几年后发生了变化)。查看源代码,TextEditor.Document.Text
似乎执行等同于
this.Replace(0, this.TextLength, value);
所以也许类似的调用甚至可以在旧版本的库中运行。