我正在开发一个Silverlight LoB应用程序,设计人员希望它有一个标签界面,类似于Visual Studio的界面(我们可能会使用Telerik Rad控件进行对接选项卡).完成原型后,界面到目前为止运行良好,但我在思考如何在MVVM项目中实现撤消/重做功能时遇到了问题.
撤消/重做功能必须:
通常,我会使用命令模式,但我不确定如何将其应用于MVVM.
我已经使用命令和绑定来获得视图和视图模型的理想松散耦合,但它使撤消/重做变得更加棘手,因为视图模型没有任何视图概念和状态收到命令或绑定属性更改时的视图.似乎我需要某种服务跟踪,只要用户执行一些可撤消操作并获得状态以便以后恢复,哪个视图就处于活动状态.
对MVVM中实现撤消/重做的最佳实践有什么共识?我非常感兴趣地看看丹尼尔沃恩在他的钙项目中如何做到这一点; Blend显然是使用MVVM模式编写的,它的行为就像我想要的应用程序一样,如果MS解释他们是如何做到的,那就太棒了!