2009-05-22 126 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網站更多的信息和文檔。