Я реализовал отмену / повтор для приложения WPF и опубликовал свой код отмены / восстановления в http://muf.codeplex.com/.
Я подумал о том, чтобы попробовать рекомендованный подход с использованием шаблона Command для инкапсуляции логики.На бумаге это кажется хорошим, но в моем случае мне было очень сложно понять, как поместить каждое действие в команду, которая могла бы надежно отменить / повторить набор изменений.Вместо этого я выбрал «мониторинг» базовой модели на предмет изменений и затем сохранил эти изменения в стеке отмены.Это похоже на шаблон команды, но в подходе «снизу вверх».Действия отмены «выпадают» в результате изменения модели.
Действия собираются путем перехвата изменений в установщиках модели, сохранения их в единицу изменения с делегатами для отмены / повторного изменения, а затем помещения их в стек изменений.Библиотека MUF включает логику для управления стеком, создания единиц изменения и т. Д.
Комментарии и вопросы приветствуются на сайте codeplex (http://muf.codeplex.com/).Там же вы найдете полную документацию и примеры приложений.
Вы также можете получить ее через NuGet.Просто найдите «MUF» или «Monitored Undo Framework».Включает поддержку Silverlight 4.0, а также .NET 3.5, 4.0 и WP7.