小编Jam*_*sCo的帖子

如何在MVVM应用程序中实现撤消/重做?

我正在开发一个Silverlight LoB应用程序,设计人员希望它有一个标签界面,类似于Visual Studio的界面(我们可能会使用Telerik Rad控件进行对接选项卡).完成原型后,界面到目前为止运行良好,但我在思考如何在MVVM项目中实现撤消/重做功能时遇到了问题.

撤消/重做功能必须:

  1. 在撤消/重做时,恢复UI状态,即将焦点,选择等返回到源自更改的控件(例如文本框).
  2. 有一个按视图撤消/重做堆栈

通常,我会使用命令模式,但我不确定如何将其应用于MVVM.

我已经使用命令和绑定来获得视图和视图模型的理想松散耦合,但它使撤消/重做变得更加棘手,因为视图模型没有任何视图概念和状态收到命令或绑定属性更改时的视图.似乎我需要某种服务跟踪,只要用户执行一些可撤消操作并获得状态以便以后恢复,哪个视图就处于活动状态.

对MVVM中实现撤消/重做的最佳实践有什么共识?我非常感兴趣地看看丹尼尔沃恩在他的钙项目中如何做到这一点; Blend显然是使用MVVM模式编写的,它的行为就像我想要的应用程序一样,如果MS解释他们是如何做到的,那就太棒了!

silverlight prism telerik mvvm undo-redo

5
推荐指数
1
解决办法
3701
查看次数

标签 统计

mvvm ×1

prism ×1

silverlight ×1

telerik ×1

undo-redo ×1