2021-10-12

一、依赖属性和CRL 属性类似,提供一个实例级私有字段的访问封装,通过Getvalue和SetValue访问器实现属性的读写操作
最重要一个它特点是属性值依赖一个或者多个数据源,提供这些数据源的方式也可以不同
由于依赖多数据源的缘故所以才称之为依赖属性
依赖属性是一种自己可以没有值,并且可以通过Binding绑定从其它数据源获取值。依赖属性可以支持WPF中的样式设置、数据绑定、继承、动漫及默认值
属性的场景:
希望可在样式中设置属性。
希望属性支持数据绑定。
希望可使用动态资源引用设置属性。
希望从元素树中的父元素自动继承属性值。
希望属性可进行动画处理。
希望属性系统在属性系统、环境或用户执行的操作或者读取并使用样式更改了属性以 前的值时报告。
希望使用已建立的、WPF 进程也使用的元数据约定,例如报告更改属性值时是否要求 布局系统重新编写元素的可视化对象。
二、依赖属性的特点
无论什么时候,只要依赖属性的值发生改变,wpf就会自动根据属性的元数据触发一系列 的动作,这些动作可以重新呈现UI元素,也可以更新当前的布局,刷新数据绑定等等, 这种变更的通知最有趣的特点之一就是属性触发器,它可以在属性值改变的时候,执行 一系列自定义的动作,而不需要更改任何其他的代码来实现。
通过下面的示例来演示属 性变更通知
示例:当鼠标移动到Button按钮上面时,文字的前景色变为红色,离开时变为默认颜色 黑色,采用传统方式和依赖属性两种方式实现: 使用传统方式实现:XAML代码
在这里插入图片描述

和依赖属性相似的有附加属性:
附加属性作用于支持附加属性的元素
附加属性是由支持附加属性的父元素产生作用,支持附加属性的元素会继承所在的
父元素的属性
附加属性的格式:AttachedPropertyProvider.PropertyName
XAML中 内容属性值必须是连续的 XAML 内容属性的值必须完全在该对象元素上的任何其他属性元素之前或之后指定。
无 论 XAML 内容属性的值是指定为字符串,还是指定为一个或多个对象,都是如此
这对于本质而言是非法的,因为如果通过使用 content 属性的属性元素语法使此语法变为 显式,则内容属性将设置两次
如果 content 属性是一个集合,并且子元素与属性元素交错在一起,则这是一个类 似的非法示例
XAML 规范要求 XAML 处理器实现来标识值类型为集合的属性。
.NET 中的常规 XAML 处理器实现基于托管代码和 CLR,并通过以下方法之一标识集合类型: 类型实现 IList 。
类型实现 IDictionary 。
类型派生自 Array (有关 XAML 中数组的详细信息,请参阅 X:Array 标记扩展。 ) XAML 语言包含一些优化,可以生成更易于阅读的标记。 其中一项优化是:如果某个特 定属性采用集合类型,则在标记中声明为该属性的值内的子元素的项将成为集合的一部 分。 在这种情况下,子对象元素的集合是设置为集合属性的值。
元素支持一个属性元素的集合,才使用集合语法进行设置属性 使用托管代码的Add方法来增加更多的集合元素 本质是向对象的集合中添加属性项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值