c# UWP 控件 Button(三)

返回目录

 

属性综述

 

 

?
依赖属性(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.附加属性被应用到的类并非定义附加属性的那个类,依赖属性被应用到定义附加属性的那个类。   (引自:绳命如此井猜)

相关文章