在全球范围内跟踪依赖属性值的变化

时间:2010-07-06 06:41:00

标签: wpf callback dependency-properties propertygrid dependencyobject

我的应用程序中有许多控件(用户可以添加到画布),每个控件都有各种属性(主要是依赖属性)。用户可以通过属性网格(如颜色,文本等)更改其属性。

我已经实现了保存功能,因此如果用户在画布上进行了任何更改,我们会要求他在离开之前保存文档。目前我正在跟踪添加/删除/调整大小的操作(将IsChanged标志更改为true)。我还想跟踪用户所做的任何属性更改,比如他是否通过propertygrid更改了控件的颜色。

一个简单的解决方案是为每个proeprty处理PropertyChangedCallback并在其中设置标志。问题在于我必须为每个控件中的每个proeprty编写PropertyChangedCallback,同时我必须确保添加的每个新proeprty都这样做。

我的问题:是否还有其他更好的方法可以跟踪房产变化,例如在全球某个地方?

1 个答案:

答案 0 :(得分:1)

如果你的对象/类是DependencyObjects,你可以创建自己的'基类',派生自DependencyObject,它覆盖OnPropertyChanged:

  

http://msdn.microsoft.com/en-us/library/system.windows.dependencyobject.onpropertychanged.aspx

在实现中,您可以注册对象在某些单例或关联的更改跟踪管理器类中已更改,然后调用base.OnPropertyChanged。

然后更改所有对象以实现此新类而不是DependencyObject,并且当任何属性更改时,将调用您的代码。

希望有所帮助!