付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、对象在被创建时并不包含用于数据的空间,只保留在需要用到数据的时候能够获得默认值,借用其他对象的数据或实时分配的能力。这种对象为依赖对象,这种能力依靠依赖属性获得。依赖对象由 DependencyObject 类实现。依赖属性由 DependencyProperty 实现。依赖对象由 GetValue 和 SetValue 两个方法。通过继承树可知,所有空间均为依赖对象,控件的绝大部分属性也为依赖属性。依赖属性():快捷键 propdp Tab 键Public class Student:DependencyObjectPublic sic readonly DependencyProperty
2、 NameProperty=DependencyProperty.Register(“Name”,typeof(string),typeof(Student);依赖属性要存在于依赖对象中,所以 Student 类需要继承自 DependencyObject 类。依赖属性需要使用 Public sic readonly 修饰。DependencyProperty.Register 方法创建参数最少,最简单的一种重载:1、 string 类型,指明 CLR 参数作为依赖属性包装器。2、 指明依赖属性类型,TypeOf(string)。3、 依赖属性的宿主类型,TypeOf(Student)。Pro
3、pertyMetaData 类型的 DefaultMetaData 属性提供给调用者的基本信息。 CoerceValueCallBack:依赖属性被强制改变时委托会被调用,此委托可关联响应函数;DefaultValue:依赖属性未被显示赋值的时候,若会获得默认值;IsSealed:控制 PropertyMetaData 的属性值是否可更改,默认 true;PropertyChangedCallBack:依赖属性的值被更改时委托会调用,此委托可关联影响函数。 依赖属性的 DefaultMetaData 只能通过 Register 方法的第四个参数进行赋值,而且一旦赋值就不能改变( Default
4、MetaData 是个只读属性 )。 如果想用新的PropertyMetadata替换这个Metadata,需要使用DependencyProperty.OverrideMetadata 方法。创建一个 DependencyProperty 实例并用它的 CLR 属性名和宿主类型生成 HashCode 和 DependencyProperty 实 例 作 为 Key-Value 对 存 于全局 中 的 HashTable 。 生成 的DependencyProperty 作为返回值返回。过程中进 HashTable 中的 Key 由 CLR 属性名哈希值和宿主类型哈希值运算得到。Depende
5、ncyProperty 都有一个名为 Globalindex 的 型属性,经过算法得到,确保实例的 Globalindex 唯一。步骤:包装器:依赖属性包装器是一个 CLR 属性。包装器的作用为以实例的形式性才能够成为数据源 Path。依赖属性,这样依赖属依赖属性时,第二个参数数据类型,此类型也是包装器类型,全称为“依赖属性的类型”。依赖属性 SetValue 和 GetValue 的使用:Student stu = new Student(); stu.SetValue(Student.NameProperty, textBox1.Text);textBox2.SetValue(TextBo
6、x.TextProperty, stu.GetValue(Student.NameProperty);GetValue实现:public Object GetValue(DependencyProperty dp)this.VerifyAc if(dp=null)s();throw new ArgumentNullException(dp);return GetValueEntry(LookupEntry(dp.GloballIndex),dp,null,RequestFlags.FullyResolved). value;SetValue实现:1、验证依赖属性是否可以被改变,不可以则抛出异常
7、,可以将进入赋值流程。2、检测值是否为 DependencyProperty.UnsetValue,代表是否要清空现有值。如果是,则会调用mon 方法来清空。3、检测 EffectiveValueEntry 数组中是否存在依赖属性的位置,存在的话会将值进行更新,不存在则创建 EffectiveValueEntry 实例对内存控件的节省。新值。因此,WPF 系统用算法(时间)换取了4、调用 UpdateEffectValue 对新值做对应处理。引出 WPF 设计理念,使用公共静态变量作为作为标记为索引进行对象的附加属性:public class School : DependencyObject
8、和。public sicGetGrade(DependencyObject obj)return ()obj.GetValue(GradeProperty);public sic void SetGrade(DependencyObject obj,value)obj.SetValue(GradeProperty, value);public sic readonly DependencyProperty GradeProperty =DependencyProperty.RegisterAttached(Grade, typeof( UIPropertyMetadata(0);), typeof(School), newGradeProperty 是 DependencyProperty 类型的成员变量。附加属性与依赖属性不同的是方法,附加属性使用的 RegisterAttached 方法。附加属性使用方法对 getvalue、setvalue 进行了包装,目的是语句流畅、调用鲜明。实例:根据 Slider 调整蓝色方块的横纵位置。XAML 实现:C#实现 Binding:r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 事业单位医疗卫生岗面试高频考题试卷及参考答案
- 事业单位教育岗面试历年真题试卷及参考答案 2026
- 事业单位医疗卫生岗面试历年真题试卷及参考答案2026
- 事业单位土木工程岗2026面试易错题题库及参考答案
- 2026年湖南工业职业技术学院高职单招笔试综合素质历年参考题库含答案解析
- 2026年湄洲湾职业技术学院高职单招笔试职业技能测验历年参考题库含答案解析
- 2026年海南经贸职业技术学院高职单招笔试语文历年参考题库含答案解析
- 2026年泉州经贸职业技术学院高职单招笔试化学历年参考题库含答案解析
- 2026年河北青年管理干部学院高职单招笔试化学历年参考题库含答案解析
- 2026年江西青年职业学院高职单招笔试职业技能测验历年参考题库含答案解析
- 浙江省金华十校2026年11月高三模拟考试化学+答案
- 高中二年级主题班会与家长会融合课教学设计-奋斗征程中的习惯、心态与家校同行
- 2026年教师资格考试小学面试音乐试题与参考答案
- 老年病科用药安全管控指南(2026版)
- 人工智能赋能课堂教学设计方案
- QC/T 783-2026摩托车用车速传感器
- 动物疫病防治员考试题库及答案
- (2026年秋)语文人教版七年级上册知识点大全
- 2026年广西高考物理真题含答案
- 临床提高临床护理文书书写规范率品管圈
- 儿童木工教育工具安全标准与课程分级体系
评论
0/150
提交评论