使用PostSharp为嵌套属性或集合撤消重做

时间:2013-03-29 10:31:17

标签: wpf mvvm observablecollection postsharp undo-redo

我正在为包含嵌套属性和ObservableCollection的视图模型实现UndoRedo容器。我在应用程序中使用PostSharp进行异常处理,并考虑重用它来实现文章中所述的undo-redo引擎: http://www.postsharp.net/aspects/examples/undoredo

虽然上面的文章是针对具有绑定限制的windowsForms的,但我已经让引擎采用了丰富的绑定wpf平台,它对单个属性很有用。

我想知道如何扩展UndoableAttribute以处理嵌套属性和集合。直到现在,我的尝试和谷歌搜索技巧都证明是徒劳的。任何想法,或指向一些文章的指针将不胜感激。

1 个答案:

答案 0 :(得分:0)

这实际上取决于你所追求的是什么。在对象图上提供撤消功能可能是非常复杂的任务。您必须更具体地说明您想要实现的目标。

通常,您可以检测所有嵌套对象并编写一些专门的集合来存储某种全局容器中的所有更改。

我们正在努力提供这样的功能,作为PostSharp.Patterns库的未来版本的一部分 - 它应该制作到3.1或3.2。