c# UWP 控件 Button(三)

返回目录

 

属性综述

 

字段和属性

属性(property):
是字段和方法的交集,描述对象的静态特征,一般是public修饰。。
属性在外观、行为和感觉上都像字段,但属性本质上是方法,通过get和set方法来操作对应的字段。
一般采用Pascal命名法(首字母大写),数据类型要和对应的字段要一致。
属性一般跟字段一起结合起来使用,是字段的扩展。属性其实就是外界访问私有字段的入口,属性本身不保存任何数据,在对属性赋值和读取的时候其实就是操作的对应私有字段。
 
字段(field):
“成员变量”,一般在类的内部做数据交互使用,一般是private修饰。
一般采用camel命名法(首单词字母小写),字段可读可写。当字段需要为外部提供数据的时候,将字段封装为属性,而不是使用公有字段(public修饰符),这是面向对象思想所提倡的。
 
注意:在小的应用中,使用属性可能增加了编写和维护的成本。

依赖属性(DependencyProperty)
依赖属性是一种特定类型的属性。 这种属性的特殊之处在于,其属性值受到 Windows 运行时中专用属性系统的跟踪和影响。
依赖属性值不会存储为类中的字段,它们由 XAML 框架进行存储,并且使用key进行引用,该key会通过调用 DependencyProperty.Register 方法以使用 Windows 运行时属性系统注册该属性时检索。
依赖属性只能由从 DependencyObject 派生的类型使用。  DependencyObject 位于类层次结构中很高的级别,所以大部分用于 UI 和演示支持的类都能支持依赖属性。
约定如下:一个类公开的每个依赖属性都有一个 DependencyProperty 类型的相应 public static readonly 属性,该属性在同一个类上公开并提供依赖属性的标识符。 标识符的名称遵循以下约定:依赖属性+“Property”。 例如,Control.Background 属性对应的 DependencyProperty 标识符是 Control.BackgroundProperty。
 
依赖属性优先级列表:
   1、动画值
   2、本地值
   3、模板化属性
   4、式资源库。
   5、默认值
 
依赖属性可使它的值通过应用数据绑定进行设置。 数据绑定使用 XAML 中的 {Binding} 标记扩展语法、{x:Bind} 标记扩展或代码中的 Binding 类。 对于数据绑定属性,其属性值的最终确定要延迟到运行时。
要作为 {Binding} 标记扩展或 Binding 的目标,该属性必须是依赖属性。 {x:Bind} 没有此项要求,因为它使用生成的代码应用其绑定值。
如果在代码中创建绑定,请注意 SetBinding API 仅为 FrameworkElement 定义。
对于代码或 XAML,请记住 DataContext 是一个 FrameworkElement 属性。
  
附加属性
附加属性是一种 XAML 概念。 
 使用附加属性,可以在对象上设置其他属性/值对,但这些属性并不是原始对象定义的组成部分。 附加属性通常定义为一种专门形式的依赖属性,在所有者类型的对象模型中没有传统的属性包装器。
 在 XAML 中,可使用语法 AttachedPropertyProvider.PropertyName 设置附加属性。 例如: Canvas.Left。
 使用附加属性,可以避开可能会防止一个关系中的不同对象在运行时相互传递信息的编码约定。
 两种在代码中设置附加属性的方式:使用属性系统 API 或使用 XAML 模式访问器。
   
附加属性与依赖属性的区别
1.附加属性使用的RegisterAttached方法,而依赖属性使用的是Register方法
2.附加属性使用两个方法进行包装,依赖属性使用CLR属性对GetValue和Set Value两个方法进行包装。
3.附加属性被应用到的类并非定义附加属性的那个类,依赖属性被应用到定义附加属性的那个类。
 
(引自:绳命如此井猜)
posted @ 2019-11-17 09:25  离弦箭  阅读(181)  评论(0编辑  收藏  举报