标签:类型 元素 数据绑定 核心 div wpf 数据 实例 参数
属性是.net的核心部分,是每个.net程序员都必须熟悉的特性,但是在wpf中引入了依赖属性的概念,依赖属性和原来属性的定义完全不一样,wpf通过依赖属性改变了元素属性的定义方式,依赖属性为wpf的数据绑定、动画以及样式,都起到了关键的作用,所以理解依赖属性,对于理解wpf至关重要。
C#的普通属性的定义,我们十分熟悉,他是一个成员变量,增加了get/set 方法实现的一种访问器,基本定义如下:
class Example { private string name; public string Name { get { return name; } set { name = value; } } }
依赖属性的定义,比以上的步骤就复杂多得多,所有具有依赖属性的类,都是继承自DependencyObject,如何定义一个依赖属性呢,一般要经过3个步骤,
1、定义依赖属性
依赖属性的必须是静态的,且类型是DependencyProperty
public static DependencyProperty NameProperty;
2、注册依赖属性
初始化的过程,可以直接写在定义的地方,也可以写在构造函数里面,但是最好不要写在其他地方,避免属性调用的时候,无法控制其是否初始化,造成没有必要的麻烦。注册依赖属性,通过DependencyProperty对象的Register的方法,其具有五个参数:
注册一般做法有两种,其定义如下,我们对4、5的可选参数暂不定义:
做法1:
public static DependencyProperty NameProperty = DependencyProperty.Register("Name", typeof(string), typeof(Example))
做法2:
public Example() { NameProperty = DependencyProperty.Register("Name", typeof(string), typeof(Example)); }
我是比较推荐第一种方法,比较简单明了。
3、添加属性包装器
创建依赖属性的最后一步,就是使用传统的属性封装依赖属性,使得依赖属性和传统属性的特性,由于传统属性具有一个成员字段,而依赖属性没有,所以依赖属性的定义和传统属性的定义也不一样,其定义如下:
class Example:DependencyObject { public Example() { } public static DependencyProperty NameProperty = DependencyProperty.Register("Name", typeof(string), typeof(Example)); public String Name { set { SetValue(NameProperty, value); } get { return (string)GetValue(NameProperty); } } }
以上就是一个依赖属性的最基本定义,我们使用依赖属性试试。
Example e = new Example(); e.Name = "333"; MessageBox.Show(e.Name);
是不是使用方式和传统属性很相似
标签:类型 元素 数据绑定 核心 div wpf 数据 实例 参数
原文地址:http://www.cnblogs.com/minhost/p/7493365.html