wpf是什么(微软WPF是什么)
【了解属性和字段】
我们知道,属性是面向对象语言中用来封装字段的外衣,它像是字段对外界的桥梁,我们可以通过属性来验证数据的合法性或控制对外的访问性等等。每个属性的背后都有其对应的一个字段做支撑,就算是自动属性,在编译时系统也会创建其字段,只不过自动属性是微软给我们的语法糖罢了。在C中,属性最后是会编译成两个方法:get属性名和set属性名(如果是只读属性,则没有set方法,反之没有get方法)。
编译成方法,属性就不会占用太多空间,因为方法存在于内存公共的方法区,每个实例的创建不过是多一个指向该方法的指针。但是字段不一样,每个实例创建的创建,都会在内存中开辟对应的空间来存放字段,一个类中的字段越多,它在内存中占用的空间就越大,理解了这个理论,下面我们来正式说明什么是依赖属性,为什么要有依赖属性。
【什么是依赖属性】
我们使用一个控件,可以看到这个控件有很多的属性,有属性就有字段的内存开销,但实际上对于一个控件,我们大多数只会使用其部分常用属性,比如Button我们最常使用Content,Height等属性,那些不经常使用的属性相当于白白占用着内存。当我们写一个复杂的XAML页面,涉及到很多控件的使用时,这种浪费内存的现象就很严重。
对此,微软在WPF中引入了依赖属性(DependencyProperty),依赖属性允许没有自己的字段,可以通过Binding绑定到其它对象的属性或者说数据源上,从而获得值,这种依赖在其它对象上的属性,就是依赖属性,当明确了它的功能,我想大家就不会对依赖二字产生疑惑了,依赖属性没有自己的字段,只在使用时通过Binding从别的对象身上获取,给自己临时创建内存空间,这样不使用就不会有多余内存消耗。
包含依赖属性的对象称为依赖对象(DependencyObject),这种对象需要继承DependencyObject这个基类,实际上,WPF中的控件,都继承了DependencyObject这个类,控件中的大部分属性都是依赖属性,这样我们才能通过Binding去绑定值(不熟悉Binding的同学可以参见前文Binding(一):数据绑定系列),才不会有内存浪费现象的发生。
【从代码中学习依赖属性】
下面我们通过代码来学习一下如何声明并使用依赖属性,请先看我写好的一段代码:publicclassPikachu:DependencyObject{publicstaticreadonlyDependencyPropertyPikachuNamePropertyDependencyProperty。Register(PikachuName,typeof(string),typeof(Pikachu));}
上文说到,使用依赖属性必须要继承DependencyObject类,另外,声明
依赖属性,需要使用publicstaticreadonly三个修饰符修饰,实例依赖属性也不是通过new操作符,而是通过DependencyProperty的Register方法来获取。
依赖对象的名字,有个约定,就是以Property为后缀,在C中有很多命名约定,比如接口用I做前缀,特性用Attribute做后缀等等,这样做都是为了有个良好的命名规范,做到见名知意。
Register方法有三个重载,此处用的是其三个参数的重载,它还有四个参数和五个参数的重载。第一参数是指定依赖属性的包装器名称是什么(包装器就是用来包装依赖属性的,通过一个属性来包装依赖属性供外部使用,具体下文会讲,此处先做了解)第二个参数是指定依赖属性要存储的值的类型是什么第三个参数是指定依赖属性属于哪个类的,或者说是为哪个类定义依赖属性其它重载中第四个参数是指定依赖属性的源数据,用于提供给调用者此依赖属性的信息其它重载中第五个参数是自定义的依赖属性生成时的验证回调
声明了依赖属性,但是如何给依赖属性赋值呢,这就要用到DependencyObject基类中的方法了,我们使用其中的SetValue方法和GetValue方法来操作依赖属性的值,请看下面改动后的代码:publicclassPikachu:DependencyObject{publicstringPikachuName{get
郑州做人流多少钱(郑州市不孕不育医院有哪些)郑州无痛人流手术多少钱?郑州现代妇科医院的专家介绍说无痛人流费用主要由以下三部分组成1人流前的检查费用。正常情况下,检查费用在一两百元左右。做人流手术最重要的第一步术前常规检查。主
检查微量元素多少钱(女人缺微量元素的表现)膳食矿物质是人体必不可少的元素,根据人体的需求量,膳食矿物质被分为宏量元素微量元素和超微量元素,宏量元素一般是指成人每天需求量大于100毫克的矿物质,如钠钾氯钙镁磷,微量元素通常指
word怎么排序(word表格序号自动生成1234)来来来考考大家!看见上面这个十段话没有,如果我想把第一第二第三换成1。2。3。你会怎么换,是不是会一个个删掉然后一个个打字?那你就太慢了!!!接下来教你一个快捷办法。注文字是用wo
阿里云服务器怎么样(阿里云值得去吗)2018年临近双11的时候,当时宣传的云计算非常火热,作为一个爱折腾的人,好奇的心理不断促使我想亲自体验一把,到底这个云服务器有什么特别之处购买详情之前一直未接触过所谓的云服务器,
一顿是多少升(一个人一个月用水6吨正常吗)1水是什么人类很早就知道水利用水,水无色无味无嗅透明,是自然界中最常见的液体。1784年英国科学家卡文迪许用实验证明水不是元素,是由两种气体化合而成的产物。1809年,法国化学家盖
不锈钢多少钱(最好的不锈钢多少钱一斤)201跌200,304跌400,一边跌一边卖,跑得慢的是韭菜!今天的不锈钢行情依旧一蹶不振,部分201跌50200,部分304跌100400,伦镍跌200,期货跌200。1hr镍价
汽车冷媒多久(汽车换一下冷媒要多少钱)汽车在使用过程中,伴随着路面颠簸和时间的推移,汽车大部分零部件都会有不同程度的老化,储存制冷剂容器的密封性能会变差。随着气温的升高,汽车空调慢慢地开始为人们所用,如果你的空调不在有
玻璃水多久加(汽车玻璃水什么时候加合适)玻璃水扮演着玻璃清洁工的角色,看起来无足轻重,却是日常行车离不开的。春季扬尘纷飞要用,夏季雨水频繁要用,秋季雾霾多发要用,冬季空气干燥要用。因为地区季节温度的不同,我们要选择不同冰
蜂蜜水多少(蜂蜜水加多少合适)蜂蜜水中含有多种营养物质,口感清甜,很是好喝,就是不知道蜂蜜水放多少蜂蜜?蜂蜜水用多少度水最好?蜂蜜水放多少蜂蜜一般是半汤匙1匙蜂蜜(水250ml),也可以按喜好调配。蜂蜜性平,味
怎么算容积(长方体水箱的容积怎么算)容积的计算方法包括这三种,分别是长方体的容积计算方法正方体的容积计算方法圆柱的容积计算方法。长方体的容积计算方法如果容器的内部是长方体,那么,同学们就要用长方体的体积计算公式求解容
教大家华硕笔记本键盘失灵怎么解决近日有关于教大家华硕笔记本键盘失灵怎么解决的问题受到了很多网友们的关注,大多数网友都想要知道教大家华硕笔记本键盘失灵怎么解决的具体情况,那么关于到教大家华硕笔记本键盘失灵怎么解决的