逗人,
我有对象模型,其成员' (对象')属性可以通过PropertyGrid和UI(PopupMenu等)进行更改。我在这种情况下寻找支持UndoRedo和感兴趣的Command Pattern设计。据我所知,通过PropertyGrid更改任何属性应该在UndoRedo堆栈中注册,但是,撤消此操作等于将该属性更改为旧值 - 和无限循环?你知道这种情况下的最佳做法吗?
感谢。
答案 0 :(得分:1)
我认为撤消操作不必算作更改。
您有一系列更改。进行更改时,您可以在此集合中添加项目。如果进行撤消,则只需将当前状态与[i-1]状态交换。如果进行重做,则将当前状态与[i + 1]状态交换。如果你做了一些撤销然后进行了更改,你就可以从那里开始编写并重写所有可能的重做。