导图社区 依赖属性
依赖属性 定义 注册 依赖属性支持的个种功能,注册依赖属性(这一步,需要在任何使用属性代码前完成,所以注册这一步要在属性所在类的静态构造函数中完成)。
社区模板帮助中心,点此进入>>
互联网9大思维
产品立项报告
组织架构-单商户商城webAPP 思维导图。
域控上线
产品经理如何做好项目管理
python思维导图
经验分享:产品经理必懂的产品思维
产品诞生过程
产品周期图
css
依赖属性
定义
只能为依赖对象(继承自DependencyObject的类)定义依赖属性
定义表示属性的对象,该对象的类型必须是DependencyProperty
属性,应该始终保持可用,甚至可能在多个类之间共享这些属性,所以必须将属性定义为所属类的静态字段 示例: public class FramworkElement:UIElement,.... { public static readonly DependencyProperty MarginProperty ...... } 跟据约定:定义依赖属性的字段名称 = 普通属性名称 + Property后缀,这样可以从名称中很容易区分普通属性、和依赖属性
注册依赖属性(这一步,需要在任何使用属性代码前完成,所以注册这一步要在属性所在类的静态构造函数中完成)
DependencyProperty没有公开构造函数,所以不能直接new一个实列出来,只能通过静态方法DependencyProperty.Register() 来创建DependencyProperty实列。并且创建好的实列,不能被修改因为DependencyProperty的成员都是只读的,成员的初始化必须只能通过DependencyProperty.Register方法来初始化设置
创建FramworkPropertyMetadata对象
FrameworkPropertyMetadata对象用来表示依赖属性将支持那些服务(如 数据绑定、动画、样式以及日志 等等)
调用静态方法DependcyProperty.Register()注册属性
示例: static FrameworkElement() { FrameworkPropertyMetadata metadata = new FrameworkPropertyMetadata( new Thickness(), FramworkPropertyMetadataOptions.AffectsMeasure); MarginProperty = DependcyProperty.Register( "Margin", //属性名 typeof(Thickness),//属性使用的数据类型 typeof(FrameworkElement), 拥有该属性的类 metadata, //可选的 指示依赖属性要支持那些特性 new ValidateValueCallback(FramworkElement.IsMarginValid) //可选的 验证属性值是否合法的回调函数 ); ... }
需要提供的参数有: (1)属性名 (2)属性使用的数据类型 (3)拥有该属性的类型 (4)可选的 指示要支持那些特性的FrameworkPropertyMetadata对象 (5)可选的 用于验证属性值的回调函数
用普通属性包装
使用和传统.net属性相同方式的读取和设置方式
样式
数据绑定
动画
属性值继承
在元素树中向下传播默认值的内力
属性变更时通知
支持附加功能
效率更高的保存机制