如何使用 WPF 中的绑定提供撤消/重做?
例如,您使用绑定实现了一个主从视图。编辑后,您的更改会使用绑定自动保存。然后,您要撤消更改。
WPF 的绑定中是否有现成的东西?WPF 是否提供了一些结构或接口?
这个问题不是关于如何使用堆栈实现撤消/重做。
看一下IEditableObject接口。它允许您拍摄实现它的对象的快照,然后在必要时回滚到该快照。
你要绑定什么数据?
如果要对 DataSet 进行数据绑定,则可以使用 DataSet.RejectChanges() 方法撤消更改,前提是您尚未调用 DataSet.AcceptChanges()。
您可能会发现 Monitored Undo Framework 很有用。http://muf.codeplex.com/
它不使用“自上而下”命令模式,而是在更改发生时监视更改,并允许您在撤消堆栈上放置一个委托来撤消更改。
在您的情况下,如果您要绑定到底层模型/视图模型,那么您可以连接框架以捕获这些更改,然后根据需要撤消/重做它们。如果模型实现 INotifyPropertyChanged 并使用 ObservableCollections,它应该自动反映在模型上执行的操作,包括撤消/重做操作。
您可以在http://muf.codeplex.com/上的 codeplex 站点上找到更多信息和文档。