何时应实现依赖项属性?
在类上实现读/写属性时,只要类派生自 DependencyObject,便可以选择使用 DependencyProperty 标识符来支持该属性,从而使其成为依赖项属性。使属性成为依赖项属性并不始终必要或适当,具体取决于您的需要。有时,使用私有字段支持属性的典型方法便能满足要求。但是,只要您希望属性支持以下一种或多种 Silverlight 属性系统功能,就应将您的属性作为依赖项属性实现:
-
您希望可在样式中设置此属性。有关更多信息,请参见通过使用 ControlTemplate 自定义现有控件的外观。
-
您希望此属性支持数据绑定。有关数据绑定依赖项属性的更多信息,请参见数据绑定。
-
您希望此属性支持经过动画处理的值。有关更多信息,请参见动画概述。
-
您希望 Silverlight 属性系统在属性系统本身、环境或用户执行的操作或者读取并使用样式而更改了属性以前的值时进行报告。您的属性可以指定在每次属性系统确定属性值已被明确更改时将调用的回调方法。
自定义依赖项属性
1 public static readonly DependencyProperty AquariumGraphicProperty = DependencyProperty.Register(
2 "AquariumGraphic",
3 typeof(Uri),
4 typeof(AquariumObject),
5 new PropertyMetadata(null,
6 new PropertyChangedCallback(OnUriChanged)
7 )
8 );
9 public Uri AquariumGraphic
10 {
11 get { return (Uri)GetValue(AquariumGraphicProperty); }
12 set { SetValue(AquariumGraphicProperty, value); }
13 }
14
15
16 private static void OnUriChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
17 {
18 Shape sh = (Shape)d;
19 ImageBrush ib = new ImageBrush();
20 ib.ImageSource = new BitmapImage(e.NewValue as Uri);
21 sh.Fill = ib;
22 }
23
玩技术,要学会忍受寂寞--