Я работаю над приложением Silverlight LoB, дизайнеры которого хотят иметь интерфейс с вкладками, аналогичный интерфейсу Visual Studio (вероятно, мы будем использовать элементы управления Telerik Rad для закрепления вкладок).Сделав прототип, интерфейс работает хорошо до сих пор, но у меня возникают проблемы с размышлениями о том, как реализовать функциональность отмены / возврата в проекте MVVM.
Функциональные возможности отмены / повтора должны:
- При отмене / возврате восстановить состояние пользовательского интерфейса, то есть вернуть фокус, выделение и т. Д. Элементам управления (таким кактекстовое поле), из которого произошли изменения.
- Наличие стека отмен / повторов для каждого вида
Как правило, я бы использовал шаблон команды, но не уверен, какпримените это с MVVM.
Я использовал командование и привязку, чтобы получить идеализированную слабую связь представлений и моделей представлений, но это усложняет отмену / повтор, так как модель представления не имеет никакой концепциипредставление и состояние представления при получении команды или изменении связанного свойства.Кажется, мне нужен какой-то сервис отслеживания, представление которого активно всякий раз, когда пользователь выполняет какое-то отменяемое действие и получает состояние для последующего восстановления.
Есть ли консенсус в отношении того, что является наилучшей практикой для выполнения отмены / повтора в MVVM?Я с интересом посмотрел на то, как Даниэль Воган делает это в своем проекте Calcium;Очевидно, Blend был написан с использованием шаблона MVVM, и он ведет себя так, как я хочу, чтобы мое приложение, было бы здорово, если бы MS объяснила, как они это сделали!