付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47442.1-2026油气区二氧化碳地质利用与封存潜力评价方法第1部分:地质利用
- 幼儿园教师职业认同感与留任意向-基于2023年人事流动数据统计关联
- 国际贸易(正考)
- 建筑垃圾制砂商砼搅拌生产线项目可行性研究报告模板申批拿地用
- 广西北海市2025年公共资源(建设工程类)招标投标评标专家考试题库及答案
- 轻工企业安全生产许可证实施办法
- (完整版)高处作业安全培训方案
- 2026届江苏省苏州市高三三模语文试题(含答案)
- 2026各行业上半年工作复盘总结+下半年规划方案模板 可编辑
- 现代职教体系贯通培养项目申报书
- 2026年公需科目《人工智能》试题附答案
- 2026上海市中考地理考前一周加分卷含答案
- 2026陕西演艺集团有限公司招聘备考题库及答案详解(历年真题)
- (2026版)公路工程建设项目安全生产费用清单及计量规范课件
- 高速公路人行天桥拆除施工方案
- 美容院顾客消费记录表
- 应急宝产品培训
- 议事协商课件
- 金融知识防诈骗进校园
- 药品行政执法培训课件
- 药企化验室安全培训课件
评论
0/150
提交评论