我一直在研究一个涉及移动许多形状的 WPF 应用程序。它主要是 MVVM 并且严重依赖命令。直到最近我才担心撤消/重做。我认为这不会太难,因为我的大部分更改都涉及继承实现 ICommand 的基类 CommandBase 的命令。
到目前为止,我已经添加了另一个名为 IUndoCommand 的接口,它使用 ICommand。我添加了一个 Undo 方法,该方法将在调用 undo 时执行所需的操作。
我将为 Undo 和 Redo 使用堆栈,但我遇到了 Execute/Undo 方法的参数问题。有没有合适的方法来存储这些对象类型的参数?是否建议向 IUndoCommand 添加字段/方法?如果是这样,我应该在 Execute 方法或构造函数中设置它(如果我可以的话。)
如果不是,我应该将它作为堆栈中的自己的对象传递吗?
其次,(尽管这可能是它自己的问题)是否有更好的数据结构来跟踪多个命令?我目前有一个循环,它运行多个命令来移动多个选定的形状,并希望允许一个撤消来撤消它们。我想我可以将它自己转换为命令并将命令传递给它,但我又是新手,宁愿做对。
感谢您的阅读,任何帮助将不胜感激。
资料来源: