WPF依赖属性1
Posted 挨踢老干部的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF依赖属性1相关的知识,希望对你有一定的参考价值。
属性是.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的方法,其具有五个参数:
- 属性的名称;
- 属性的类型;
- 拥有该属性的类型;
- 还有一个FrameworkPropertyMetadata的实例,这个是一个具有附加属性设置对象,这个元素可选,这个在后面在讲解。
- 一个用于验证的回调函数,该元素也是可选的。
注册一般做法有两种,其定义如下,我们对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);
是不是使用方式和传统属性很相似
以上是关于WPF依赖属性1的主要内容,如果未能解决你的问题,请参考以下文章