2011-06-16 1 views
3

InkCanvas Je crée la peinture comme application en utilisant InkCanvas, je suis prêt à mettre en œuvre Annuler et Redo fonctionnalité dans mon application.Undo/Redo pile de commandes pour

Quelle est la meilleure façon de mettre en œuvre Undo/Redo pour InkCanvas ??

Répondre

4

J'ai mis en œuvre annuler/rétablir pour une application WPF et a fini par publier mon code annuler/rétablir à http://muf.codeplex.com/. Vous pouvez également l'obtenir via NuGet. Recherchez simplement "MUF" ou "Monitored Undo Framework". Il inclut le support pour Silverlight 4.0, ainsi que pour .NET 3.5, 4.0 et WP7.

Dans mon application WPF, nous avions aussi un InkCanvas qui a soutenu Undo/Redo. Dans mon cas, les traits pour InkCanvas ont été enregistrés dans une base de données avec le reste des données. J'ai accroché les différents événements sur InkCanvas pour détecter quand les traits avaient changé. Puis utilisé ces événements pour mettre à jour les entités.

Les entités ont suivi les changements aux accidents vasculaires cérébraux et intégrés dans la bibliothèque Undo/Redo. Lorsque l'utilisateur cliquait sur Annuler, la bibliothèque modifiait les entités dans leur état d'origine. Ensuite, je repasserais ces traits dans l'InkCanvas et déclencherais une mise à jour de la mise en page.

Commentaires et questions sont les bienvenus sur le site CodePlex (http://muf.codeplex.com/). Vous y trouverez également une documentation complète et des exemples d'applications.

+0

La bibliothèque est génial! Ce serait bien si vous fournissiez son utilisation pour inkcanvas. Par exemple: var undoRoot = UndoService.Current [this.inkCanvas] –

+1

Enfer, la MUF est difficile à utiliser. Je ne pouvais pas obtenir un simple code d'annulation/rétablissement fonctionnant correctement. Le codeplex nécessite plus d'exemples, et pas aussi complexe que dans votre application Photo ou tests unitaires. Vous devriez fournir aux utilisateurs l'exemple le plus simple possible pour que MUF fonctionne. –

+0

@VasiliyBorovyak Je serais heureux de vous aider. N'hésitez pas à poster une question sur le site codex et je continuerai la discussion là-bas. – NathanAW