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