2009-05-22 127 views
6

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

例如 您使用绑定实现主 - 细节视图。编辑完后,您的更改将使用绑定自动保存。然后,您要撤消更改。

有什么现成的使用为WPF绑定? WPF是否提供了一些结构或接口?

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

回答

5

看看在IEditableObject接口。它允许您拍摄实现它的对象的快照,然后根据需要回滚到该快照。

1

你在做什么数据绑定?

如果你是数据绑定到DataSet您可以通过使用DataSet.RejectChanges撤消更改()提供的方法你还没有叫DataSet.AcceptChanges()。

+0

关于通用结合的例子从派生于DependencyObject的对象,或控制到控制绑定? – 2009-05-22 09:45:40

+0

正如肯特所说,如果该对象实现了IEditableObject,那么你需要进入但如果没有,那么你需要手动执行此操作。 – 2009-05-22 10:40:51

1

您可能会发现受监视的撤销框架非常有用。 http://muf.codeplex.com/

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

在你的情况,如果你绑定到一个基础模型/视图模型,那么你可以挂钩捕捉到这些变化,然后撤消/根据需要重做的框架。如果模型实现INotifyPropertyChanged并使用ObservableCollections,则它应该自动反映在模型上执行的操作,包括撤消/重做操作。

您可以在http://muf.codeplex.com/找到这个名为CodePlex网站更多的信息和文档。