首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MVVM Light and Undo / Redo?

MVVM Light and Undo / Redo?
EN

Stack Overflow用户
提问于 2010-08-31 17:55:26
回答 3查看 4K关注 0票数 4

我可能在这里混淆了一些职责(甚至可能是术语),但我不能完全理解这一点。

命令模式和MVVM Light中的命令(因此在WPF中也是如此)之间是否有关系?我真的很想实现某种撤销/重做机制,但不太清楚是否有一种"MVVM Light way“来做到这一点。

如果这与MVVM Light无关,那么我如何通过不使用MVVM Light WPF来使用"raw“中的撤消/重做命令呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-31 21:49:47

MVVM Light和WPF中的命令通常是一种将任意功能集封装在单个对象和接口中,并将任意数量的UI元素连接起来执行该操作的方法。

这些命令可以合并到撤消/重做功能的命令模式实现中,但您需要更多。

您可以使用自己的命令栈,这是我在当前的WPF项目中采用的方法(使用Prism)。

基本上,这是一种思维方式的转变,用户可以通过UI进行的每一项更改

  1. 封装在一个命令中
  2. 有一个对应的撤消命令
  3. 被推送到堆栈

还有一些开源项目可以帮助解决这个问题,包括http://undo.codeplex.com/,这是Visual Studio团队成员Kirill Osenkov的一个副项目。

票数 5
EN

Stack Overflow用户

发布于 2011-06-21 11:08:35

我实现了一个WPF应用程序的撤销/重做,并将我的撤销/重做代码发布到http://muf.codeplex.com/

我考虑尝试使用Command模式封装逻辑的推荐方法。这在理论上似乎很好,但在我的情况下,找出如何将每个操作放入一个命令中以可靠地撤消/重做一组更改似乎非常具有挑战性。相反,我采取的方法是“监控”底层模型的更改,然后将这些更改存储在撤消堆栈中。这有点像命令模式,但采用的是“自下而上”的方法。由于模型的改变,撤消操作会“失效”。

通过截取模型的setter中的更改,将它们存储到具有撤消/重做更改的委托的更改单元中,然后将其放在更改堆栈中,可以收集这些操作。MUF库包括管理堆栈、创建更改单元等的逻辑。

欢迎在codeplex网站( http://muf.codeplex.com/ )上发表评论和提出问题。您还可以在那里找到完整的文档和示例应用程序。

你也可以通过NuGet获取它。只需查找"MUF“或”监控撤消框架“即可。它包括对Silverlight4.0以及.NET 3.5、4.0和WP7的支持。

票数 2
EN

Stack Overflow用户

发布于 2010-08-31 21:21:41

恐怕我不知道MVVM或WPF中有什么固有的撤销/重做功能。

MVVM Light是一个非常好的轻量级工具包,仅用于快速实现MVVM。任何额外的模式,你必须自己实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3607916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档