0

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

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

一个简单的解决方案是处理每个proeprty的PropertyChangedCallback并在其中设置标志。与此问题是,我将不得不为每个控件中的每个proeprty编写PropertyChangedCallback,并且同时我将不得不确保每添加一个新proep都执行相同的操作。

我的问题:有没有其他更好的方式来跟踪财产变化,在一些全球性的地方说?

回答

1

如果你的对象/类DependencyObjects,你可以创建自己的 '基地班',自DependencyObject它覆盖OnPropertyChanged得出:

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

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

然后改变你的所有对象来实现这个新类而不是DependencyObject,当任何属性改变你的代码将被调用。

希望有帮助!

+0

正是我在找的东西:)我已经有一个基础类为我的控件从UserControl派生,因此实现这个很easyyy :) – akjoshi 2010-07-06 10:11:25