Silverlight--DependencyProperty 类(二)

     前面说到DependencyProperty 用途和方法的使用示例,今天详细说一下如何自定义依赖项对象。首先我们要明白什么是依赖项属性和使用依赖项属性的需求,依赖项属性是通过调用 DependencyProperty.Register 方法向 Silverlight 属性系统注册并由DependencyProperty标识符字段标识的属性。而依赖项属性的的特点是依赖项属性只能由 DependencyObject 类型使用,但 DependencyObject 在 Silverlight 类层次结构中的级别很高,因此,Silverlight 中的大多数可用于用户界面和演示的类都可能支持依赖项属性。

      使属性成为依赖项属性并不一定需要,取决于你的需要。在使用私有字段支持属性的典型方法便能满足要求情况下是不需要的。如果希望属性支持以下一种或多种 Silverlight 属性系统功能,就应将您的属性作为依赖项属性实现。微软为我们总结了一下在什么情况下使用依赖属性:

  • 您希望可在样式中设置此属性。
  • 您希望此属性支持数据绑定。

  • 您希望此属性支持经过动画处理的值。

  • 您希望 Silverlight 属性系统在属性系统本身、环境或用户执行的操作或者读取并使用样式而更改了属性以前的值时进行报告。您的属性可以指定在每次属性系统确定属性值已被明确更改时将调用的回调方法。

我们可以看到这与依赖属性的定义CLR 属性作为依赖属性获得的支持相同。

      依赖项属性名称也是有约定的,该名称在每个注册类型中必须唯一,并且唯一性范围包括任何继承的成员。通过基类型继承的依赖项属性将被视为已是注册类型的一部分,无法再次注册已继承属性的名称。要求注册该属性时的属性名称和后缀 Property 组合起来。

例如:

public static readonly DependencyProperty ButtonsTextProperty =DependencyProperty.Register("ButtonsText",  typeof(String),typeof(buttonDemo), null);

  

     下面我们了解一下自定义依赖项对象应按照下面的准则使用依赖项属性支持这些 CLR 属性:

  • 使用 Register 方法(该方法返回 DependencyProperty)来注册依赖项属性。您应在您的类中将该属性存储为可访问的静态只读字段。按照约定,此 DependencyProperty 标识符字段的名称应以 Property 结束。
  • 在注册过程中,可以为该属性提供 PropertyMetadata 以便进一步定义该属性的行为。

  • 为该属性提供 CLR getset 访问器。

  • 实现包装调用 get 实现中的 GetValueset 实现中的 SetValue

示例

public static readonly DependencyProperty ButtonsTextProperty =DependencyProperty.Register("ButtonsText",  typeof(String),typeof(buttonDemo), null);
public String ButtonsText 
        { 
          get { 
               return (String)GetValue(ButtonsTextProperty); 
                } 
           set {  
               SetValue(ButtonsTextProperty, value); 
                 }
          }

更多内容访问:http://flute.vacau.com/

转载时须注明本文的详细链接,否则作者将保留追究其法律责任。

posted @ 2011-08-18 11:32  flute  阅读(1410)  评论(0编辑  收藏  举报