2011-06-16 100 views

回答

4

我已經爲WPF應用程序實現撤銷/重做,並最終將我的撤銷/重做代碼發佈到http://muf.codeplex.com/。你也可以通過NuGet獲取它。只需查找「MUF」或「受監視的撤消框架」即可。它包括對Silverlight 4.0以及.NET 3.5,4.0和WP7的支持。

在我的WPF應用程序中,我們也有一個支持撤銷/重做的InkCanvas。在我的情況下,InkCanvas的筆畫與其餘數據一起保存到數據庫中。我將InkCanvas上的各種事件掛鉤以檢測筆畫何時發生變化。然後使用這些事件來更新實體。

實體跟蹤對筆畫的更改並將其集成到撤消/重做庫中。當用戶單擊「撤消」時,庫會將實體更改回其原始狀態。然後我會將這些筆畫推回InkCanvas並觸發佈局更新。

歡迎對codeplex網站發表評論和問題(http://muf.codeplex.com/)。您還會在那裏找到完整的文檔和示例應用程序。

+0

圖書館很棒!如果你提供了用於inkcanvas的用法,那將是非常好的。例如:var undoRoot = UndoService.Current [this.inkCanvas] – 2011-12-09 17:01:30

+1

地獄,MUF很難使用。我無法得到一個簡單的撤消/重做代碼正常工作。該codeplex需要更多的例子,而不是像你的照片應用程序或單元測試那樣複雜。您應該爲用戶提供最簡單的示例以獲得MUF工作。 – 2011-12-09 20:02:36

+0

@VasiliyBorovyak我很樂意提供協助。隨時在codeplex網站上發佈問題,我會繼續討論。 – NathanAW 2011-12-12 17:44:55