我的应用程序是MDI Winform应用程序。 我遇到了一些与MVP模式和数据绑定有关的问题。
我的所有表格都是无模式的。当我修改字段,或更改组合框中的选定项目时,我想修改模型,我希望所有表单立即与模型同步。 数据绑定可以完美地用于简单的字段,对于复杂的操作,我使用Presenter“手动”更新视图。
但是,如何在图片中放置撤销/重做机制? 我的意思是:我想通过点击“撤消”按钮来恢复我在文本字段中所做的更改。
我尝试应用命令模式,但似乎没有地方在数据绑定机制中引入“命令”机制。我对此非常感兴趣,现在我正在考虑完全抛弃绑定机制。
我看到很多关于Binding的文章,但是没有解决撤销/重做的问题。
undo / redo和数据绑定真的不兼容吗?
答案 0 :(得分:0)
您可以使用Monitored Undo Framework(http://muf.codeplex.com/或NuGet)等库来管理撤消堆栈。它不需要Command模式。而是监视模型的更改,然后将这些更改推送到撤消堆栈。撤消更改意味着从堆栈中提取先前值并将其推回到模型中。
该库是为WPF编写的,但如果您正确设置了绑定,它也适用于WinForms。此外,您可以在模型中挂钩回调,以便了解由于撤消/重做操作而导致值发生更改的时间。
该库包含文档,单元测试以及指向如何使用它的一些示例的链接。