原文地址:https://wpf.2000things.com/2010/11/07/118-dont-add-code-to-dependency-property-gettersetter/
当我们使用自定义的依赖属性的时候,一般通过getter/setter 方法包裹DependencyObject.GetValue 和DependencyObject.SetValue 来使用。这样可以让依赖属性像一般的公共语言运行库(CLR)属性一样被使用,下面是一个例子:
public int Age
{
get { return (int)GetValue(AgeProperty); }
set { SetValue(AgeProperty, value); }
}
除了
GetValue 和
SetValue我们不能往上面的方法中加入其它任何代码。当你从XAML中get/set 属性的值的时候,WPF会直接调用
GetValue 和
SetValue 方法,因此会绕过你自定义的getter 和setter。如果需要在获取或者设置属性值的时候需要处理一些操作,你应该在注册的时候注册一个回调函数,在回调函数中实现。