2015-04-13 1 views
12

Je travaille actuellement sur l'implémentation d'AvalonEdit dans un éditeur côte à côte HTML WYSIWYG/"Source Code". Lorsque l'utilisateur passe du mode Création (RichTextBox) au mode source (AvalonEdit TextEditor), le code XAML du RTB est converti en HTML et écrit dans la propriété TextEditor.Document.Text.AvalonEdit :: Comment conserver l'état actuel dans UndoStack?

Ceci efface apparemment la pile d'annulation.

Comment puis-je pousser l'état du document sur le UndoStack afin que l'utilisateur puisse "revenir en arrière"? J'ai essayé envelopper l'opération d'écriture dans un RunUpdate() IDisposable, mais cela ne fonctionne pas:

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

Toute aide serait grandement appréciée.

Répondre

0

Puisqu'il ya quelques années de retard, je ne suis pas sûr si elle répond directement à la question. Cependant, la version actuelle des fonctions d'AvalonEdit est telle que le réglage TextEditor.Text effacera la pile d'annulation, mais la modification de TextEditor.Document.Text ne le fera pas. (Cela va à l'encontre du comportement observé par le demandeur, alors peut-être que cela a changé dans les deux années suivantes). En regardant le code source, TextEditor.Document.Text semble exécuter du code équivalent à

this.Replace(0, this.TextLength, value); 

donc peut-être un appel similaire fonctionnerait même sur les anciennes versions de la bibliothèque.