首页 > 代码库 > 三,依赖项属性

三,依赖项属性

  1. 定义依赖项属性
    public class FrameworkElement : UIElement{    public static readonly DependencyProperty MarginProperty;    static FrameworkElement()    {        FrameworkPropertyMetadata metadata = new FrameworkPropertyMetadata(new Thickness(), FrameworkPropertyMetadataOptions.None);        MarginProperty = DependencyProperty.Register("Margin", typeof(Thickness), typeof(FrameworkElement), metadata, null);    }    public Thickness Margin    {        set { SetValue(MarginProperty, value); }        get { return (Thickness)GetValue(MarginProperty); }    }}

    只能为依赖对象(继承自DependencyObject的类)添加依赖项属性。它是DependencyProperty类的实例,属性信息应该始终保持可用,甚至可能需要在多个类中共享这些信息,因此,必须将DependencyProperty对象定义为与之相关联的类的静态字段。根据约定,定义依赖项属性的字段的名称为在普通属性的末尾加上单词“Property”,且使用readonly关键字进行修饰。
    DependencyProperty不能被直接实例化,因为DependencyProperty没有公有的构造函数,只能使用静态的DependencyProperty.Register()方法创建。
    注册一个依赖项属性需要经过两个步骤,首先创建一个FrameworkPropertyMetadata对象,该对象希望通过依赖项属性使用什么服务。其次通过调用DependencyProperty.Register()静态方法注册属性,在这一步中需提供以下几个要素:
    1)  属性名:在该示例中为Margin
    2)  属性使用的数据类型:在该示例中为Thickness结构
    3)  拥有该属性的类型:在该示例中为FrameworkElement类
    4)  一个具有附加属性设置的 FrameworkPropertyMetadata对象,该要素是可选的
    5)  一个用于验证属性的回调函数,该要素是可选的
    FrameworkPropertyMetadata类的所有属性的说明如下:
    QQ图片20140719183316