您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
wpf是什么(微软WPF是什么)
属性,字段,方法wpf是什么(微软WPF是什么)
发布时间:2016-12-08加入收藏来源:互联网点击:
很多朋友想了解关于wpf的一些资料信息,下面是小编整理的与wpf相关的内容分享给大家,一起来看看吧。很多朋友想了解关于皮卡丘的一些资料信息,下面是小编整理的与皮卡丘相关的内容分享给大家,一起来看看吧。
【了解属性和字段】
我们知道,属性是面向对象语言中用来封装字段的外衣,它就像是字段与外界的桥梁。我们可以通过属性来验证数据的合法性或者控制外部可访问性,等等。每个属性都由相应的字段支持。即使是自动属性,系统也会在编译时创建它的字段,但自动属性是微软给我们的语法糖果。在C#中,属性最终被编译成两个方法:get_属性名和set_属性名(如果是只读属性,则没有set方法,反之则没有get方法)。
编译成方法,属性不会占用太多空间,因为方法存在于内存的公共方法区,每个实例的创建只是多了一个指向方法的指针。但是,字段不同。每个实例创建都会在内存中打开相应的空间来存储字段。一个类中的字段越多,它在内存中占用的空间就越大。理解了这个理论之后,我们来正式解释一下什么是依赖属性,为什么要有依赖属性。
【什么是依赖属性】
当我们使用一个控件时,可以看到它有很多属性,如果有属性,就会有字段的内存开销。然而,其实对于一个控件,我们大多数人只会使用一些常用的属性,比如Button等。我们最常使用的是内容、身高等属性,那些不常使用的属性就相当于白白占用内存。当我们编写一个复杂的XAML页面,其中涉及到许多控件的使用,这种内存浪费是非常严重的。
为此,微软在WPF引进了依赖属性(Dependency Property),依赖属性允许没有自己的字段,可以通过Binding绑定到其它对象的属性或者说数据源上,从而获得值。这种依赖于其他对象的属性就是从属属性。当它的功能明确后,我想大家就不会对依赖这个词感到困惑了。依赖属性没有自己的字段,只是在使用的时候通过绑定从其他对象获取,为自己临时创造内存空间,这样在不使用的时候就不会有多余的内存消耗。
包含依赖属性的对象称为依赖对象(Dependency Object),它需要继承DependencyObject的基类。其实WPF所有的控件都继承了DependencyObject的类,控件中的属性大部分都是依赖属性,这样我们就可以通过绑定来绑定值(不熟悉绑定的可以参考之前的Binding (I) 3360数据绑定系列),不会有内存浪费的问题。
【从代码中学习依赖属性】
让我们学习如何通过代码声明和使用依赖属性。请先阅读我写的一段代码:
公共类皮卡丘: DependencyObject
{
public static readonly dependency property PikachuNameProperty=
DependencyPropertyRegister('皮卡丘名字',typeof(字符串),typeof(皮卡丘));
}如上所述,继承DependencyObject类需要使用从属属性。此外,声明
依赖需要使用public static readonly三个修饰符修饰,实例依赖属性不是通过new运算符,而是通过通过DependencyProperty的Register方法来获取.
依赖对象的名字有一个约定,就是Property作为后缀。C#中有很多命名约定,比如I作为接口的前缀,Attribute作为特性的后缀,等等。这些都是为了有一个好的命名约定,做到见名知意。
Register方法有三个重载,这里使用了它的三个参数的重载,它有四个和五个重载。
第一个参数是指定依赖属性的包装器的名称(包装器用于包装依赖属性,依赖属性通过属性包装供外部使用,下面将详细描述。先了解到这里。)第二个参数是由依赖属性存储的值的类型。第三个参数是依赖属性所属的类,或者依赖属性是为哪个类定义的。其他重载中的第四个参数是依赖属性的源数据。用于向调用方提供此依赖属性的信息。其他重载中的第五个参数是生成依赖项属性时的验证回调。依赖属性声明了,但是怎么给它赋值呢?这需要DependencyObject基类中的方法。我们使用SetValue方法和GetValue方法来操作依赖属性的值。请查看以下修改后的代码:
公共类皮卡丘: DependencyObject
{
公共字符串皮卡丘名称
{
获取=
本文到此结束,希望对大家有所帮助呢。
上一篇:T怎么读(N字母怎么读)
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |