6

如何使用 WPF 中的绑定提供撤消/重做?

例如,您使用绑定实现了一个主从视图。编辑后,您的更改会使用绑定自动保存。然后,您要撤消更改。

WPF 的绑定中是否有现成的东西?WPF 是否提供了一些结构或接口?

这个问题不是关于如何使用堆栈实现撤消/重做。

4

3 回答 3

6

看一下IEditableObject接口。它允许您拍摄实现它的对象的快照,然后在必要时回滚到该快照。

于 2009-05-22T09:51:01.467 回答
1

你要绑定什么数据?

如果要对 DataSet 进行数据绑定,则可以使用 DataSet.RejectChanges() 方法撤消更改,前提是您尚未调用 DataSet.AcceptChanges()。

于 2009-05-22T09:37:08.170 回答
1

您可能会发现 Monitored Undo Framework 很有用。http://muf.codeplex.com/

它不使用“自上而下”命令模式,而是在更改发生时监视更改,并允许您在撤消堆栈上放置一个委托来撤消更改。

在您的情况下,如果您要绑定到底层模型/视图模型,那么您可以连接框架以捕获这些更改,然后根据需要撤消/重做它们。如果模型实现 INotifyPropertyChanged 并使用 ObservableCollections,它应该自动反映在模型上执行的操作,包括撤消/重做操作。

您可以在http://muf.codeplex.com/上的 codeplex 站点上找到更多信息和文档。

于 2011-06-21T03:27:45.907 回答