我可能在这里混淆了一些职责(甚至可能是术语),但我不能完全理解这一点。
命令模式和MVVM Light中的命令(因此在WPF中也是如此)之间是否有关系?我真的很想实现某种撤销/重做机制,但不太清楚是否有一种"MVVM Light way“来做到这一点。
如果这与MVVM Light无关,那么我如何通过不使用MVVM Light WPF来使用"raw“中的撤消/重做命令呢?
发布于 2010-08-31 21:49:47
MVVM Light和WPF中的命令通常是一种将任意功能集封装在单个对象和接口中,并将任意数量的UI元素连接起来执行该操作的方法。
这些命令可以合并到撤消/重做功能的命令模式实现中,但您需要更多。
您可以使用自己的命令栈,这是我在当前的WPF项目中采用的方法(使用Prism)。
基本上,这是一种思维方式的转变,用户可以通过UI进行的每一项更改
还有一些开源项目可以帮助解决这个问题,包括http://undo.codeplex.com/,这是Visual Studio团队成员Kirill Osenkov的一个副项目。
发布于 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的支持。
发布于 2010-08-31 21:21:41
恐怕我不知道MVVM或WPF中有什么固有的撤销/重做功能。
MVVM Light是一个非常好的轻量级工具包,仅用于快速实现MVVM。任何额外的模式,你必须自己实现。
https://stackoverflow.com/questions/3607916
复制相似问题