XAML标记扩展(Markup Extensions)
开发工具与关键技术:visualstudio wpf
作者:梁峻豪
一、标记扩展(Markup Extensions)
- 实际项目中为XAML控件属性赋值经常遇到:
设计时属性之处于未知状态
运行时才能获取到
2.轻松实现XAML页面属性赋值,资源引用,类型转换等操作
二、特定于 WPF 的标记扩展
WPF 编程中最常用的标记扩展是支持资源引用的标记扩展(StaticResource 和
DynamicResource),和支持数据绑定的标记扩展 (Binding)。
StaticResource 通过替换已定义资源的值来为属性提供值。 StaticResource 计算最
终在 XAML 加载时进行,并且在运行时没有访问对象图的权限。
DynamicResource 通过将值推迟为对资源的运行时引用来为属性提供值。 动态资源
引用强制在每次访问此类资源时都进行新查找,且在运行时有权访问对象图。 为了
获取此访问权限,WPF 属性系统中的依赖项属性和计算出的表达式支持
DynamicResource 概念。 因此,只能对依赖项属性目标使用 DynamicResource。
Binding 使用在运行时应用于父对象的数据上下文来为属性提供数据绑定值。 此标
记扩展相对复杂,因为它会启用大量内联语法来指定数据绑定。
RelativeSource 提供的源信息 Binding ,该信息可在运行时对象树中导航几个可能
的关系。 对于在多用途模板中创建的绑定,或在未充分了解周围的对象树的情况下
以代码创建的绑定,此标记扩展为其提供专用源。