依赖项属性
来源:互联网 发布:爱情动作片软件 编辑:程序博客网 时间:2024/06/05 04:47
概念:
WPF有一套属性系统,它提供了服务扩展CLR原有的属性系统。经过扩展后的属性,以标签嵌套的方式存在于XAML里面。而这套WPF提供的属性系统,就是依赖项属性。
它是通过.net的属性过程(property procedure)进行封装的。
定义和注册:
定义依赖项属性,根据约定,要在普通的属性后面加上"Property“。
public class FrameworkElement:UIElement, IFrameworkInputElement, IInputElement, ISupportInitialize, IQueryAmbient
{
//①定义普通属性,包括了封装
public Thickness Margin
{
get { return (Thinkness) GetValue(MarginProperty); }
set { SetValue(MarginProperty,value); }
}
//②定义依赖项属性
public static readonly DependencyProperty MarginProperty;
//③注册依赖项属性
FrameworkPropertyMetadata metadata = new FramworkPropertyMetadata(new Thickness(),
FrameworkPropertyMetadataOptions.AffecttMesure);
MarginProperty = DependencyProperty.Register("Margin",//属性名称
typeof(Thickness),//属性的类型
typeof(FramworkElement),//属性的使用者
metadata,//可选,带有附加属性的FrameworkPropertyMetadatad对象
new ValidateValueCallback(FrameworkElement,IsMarginValid));//验证的回调函数
}
//④ 属性验证的回调函数
private static bool IsMarginValid(object value)
{
Thinkness t = (Thinkness)value;
return t.IsValid(true,false,true,false);
}
强制属性
这里要理解一个回调函数和两个FrameworkPropertyMetadata的属性,分别是 ①ValidateValueCallback(属性验证)
②PropertyChangedCallback(值变更事件) ③CoerceValueCallback(强制属性/强制事件)
注释:其中①,只能验证当前访问的属性,而③可以访问对象的多个属性。②是属性的值发生变化时,触发的事件。
触发顺序为:③,①,②
另外还有 共享依赖项属性,附加的依赖项属性 等
- 依赖项属性
- wpf 依赖项属性
- 依赖项属性
- 依赖项属性
- wpf依赖项属性
- 依赖项属性
- WPF中的依赖项属性
- 初始化集合项依赖属性
- WPF中的依赖项属性
- WPF中的依赖项属性
- WPF依赖项属性学习
- WPF中的依赖项属性
- 依赖项属性的组成
- 依赖项属性概述 wpf
- WPF中的依赖项属性
- WPF中的依赖项属性
- (二)依赖项属性
- 依赖属性
- 异步调用
- Deep Learning 算法简介
- 委托
- 百度统计使用教程:如何安装统计代码详细教程
- c# Invoke和BeginInvoke 区别
- 依赖项属性
- 关于委托,事件和方法
- 形状和图形-类型结构
- Slider模板定义
- 简单的转化器
- Command的定义和应用
- ScrollBar模板定义
- DB2笔记 说道说道
- 101个硬币中有一个假币,有一个无砝码的天平,称两次,判断假币比真币重还是轻。