一、 标记扩展(Markup Extensions)
- 实际项目中为XAML控件属性赋值经常遇到:
(1)设计时属性之处于未知状态
(2)运行时才能获取到 - 轻松实现XAML页面属性赋值,资源引用,类型转换等操作
二、 特定于 WPF 的标记扩展
WPF 编程中最常用的标记扩展是支持资源引用的标记扩展(StaticResource 和 DynamicResource),和支持数据绑定的标记扩展 (Binding)。
StaticResource 通过替换已定义资源的值来为属性提供值。 StaticResource 计算最 终在 XAML 加载时进行,并且在运行时没有访问对象图的权限。
DynamicResource 通过将值推迟为对资源的运行时引用来为属性提供值。 动态资源引用强制在每次访问此类资源时都进行新查找,且在运行时有权访问对象图。 为了获取此访问权限,WPF 属性系统中的依赖项属性和计算出的表达式支持 DynamicResource 概念。 因此,只能对依赖项属性目标使用 DynamicResource。
Binding 使用在运行时应用于父对象的数据上下文来为属性提供数据绑定值。 此标 记扩展相对复杂,因为它会启用大量内联语法来指定数据绑定。
RelativeSource 提供的源信息 Binding ,该信息可在运行时对象树中导航几个可能 的关系。 对于在多用途模板中创建的绑定,或在未充分了解周围的对象树的情况下 以代码创建的绑定,此标记扩展为其提供专用源。
TemplateBinding 使控件模板能够使用模板化属性的值,这些属性来自于将使用该模 板的类的对象模型定义属性。 换言之,模板定义中的属性可访问仅在应用了模板之 后才存在的上下文。 有关详细信息,请参阅 TemplateBinding 标记扩展。
ColorConvertedBitmap 支持相对高级的映像方案。
ComponentResourceKey 和 ThemeDictionary 支持资源查找的各个方面,特别是支 持查找与自定义控件一起打包的资源和主题