0

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

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

一种直接的解决方案是为每个属性处理 PropertyChangedCallback 并在其中设置标志。问题在于我必须为每个控件中的每个属性编写 PropertyChangedCallback,同时我必须确保添加的每个新属性都执行相同的操作。

我的问题:有没有其他更好的方法来跟踪财产变化,比如在全球某个地方?

4

1 回答 1

1

如果您的对象/类是 DependencyObjects,您可以创建自己的“基类”,从覆盖 OnPropertyChanged 的​​ DependencyObject 派生:

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

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

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

希望有帮助!

于 2010-07-06T07:02:25.400 回答