WPF学习系列007: 2.6 标记扩展
2010-12-20 15:53
323 查看
标记扩展,与类型转换器相似,是扩展 XAML 的表达能力的方法。与其不同的是标记扩展提供的是一种显示的、一致的语法调用,因此标记扩展是最好的扩展 XAML 的方法。
WPF 好几个内建的标记扩展,派生于 MarkupExtension 类。
标记扩展在运行时计算字符串特性的值,并生成一个合适的基于字符串的对象。
标记扩展的语法格式
扩展标记类的名称按照惯例,都是以 Extension 后缀结尾,在 XAML 中使用它时,可以不用该后缀。
定位参数是被作为字符串参数传入扩展类的相应构造函数中的。
命名参数可以用来在已构造好的扩展对象上设置相应名字的属性。这些属性值可以是标记扩展值自己(使用嵌套的花括号表示),也可以是文本值。
摆脱花括号:如果需要设置一个属性特性值为字面值字符串(以左花括号开始),可以通过在其之前增加一对空花括号来实现。也可以使用属性元素语法来实现。
2.6 标记扩展
只要特性值由花括号({})括起来,XAML 编译器就会把它认作一个标记扩展值,而不是一个普通的字符串。花括号中的第一个识别符是标记扩展类的名称。如果标记扩展支持,可以使用逗号分隔的参数来指定它的值。
例如:
<Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="{x:Null}"
Height="{x:Static SystemParameters.IconHeight}"
Content="{Binding Path=Height, RelativeSource={RelativeSource Self}}" />
其中:x:Null、x:Static、Binding、RelativeSource 是标记扩展类名称
Path、RelativeSource 是命名参数
SystemParameters.IconHeight、Height、Self 是定位参数
例如:
<Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Content="{}{This is not a markup extension!}" />
或者
<Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
{This is not a markup extension!}
</Button>
WPF 好几个内建的标记扩展,派生于 MarkupExtension 类。
标记扩展在运行时计算字符串特性的值,并生成一个合适的基于字符串的对象。
标记扩展的语法格式
扩展标记类的名称按照惯例,都是以 Extension 后缀结尾,在 XAML 中使用它时,可以不用该后缀。
定位参数是被作为字符串参数传入扩展类的相应构造函数中的。
命名参数可以用来在已构造好的扩展对象上设置相应名字的属性。这些属性值可以是标记扩展值自己(使用嵌套的花括号表示),也可以是文本值。
摆脱花括号:如果需要设置一个属性特性值为字面值字符串(以左花括号开始),可以通过在其之前增加一对空花括号来实现。也可以使用属性元素语法来实现。
2.6 标记扩展
只要特性值由花括号({})括起来,XAML 编译器就会把它认作一个标记扩展值,而不是一个普通的字符串。花括号中的第一个识别符是标记扩展类的名称。如果标记扩展支持,可以使用逗号分隔的参数来指定它的值。
例如:
<Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="{x:Null}"
Height="{x:Static SystemParameters.IconHeight}"
Content="{Binding Path=Height, RelativeSource={RelativeSource Self}}" />
其中:x:Null、x:Static、Binding、RelativeSource 是标记扩展类名称
Path、RelativeSource 是命名参数
SystemParameters.IconHeight、Height、Self 是定位参数
例如:
<Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Content="{}{This is not a markup extension!}" />
或者
<Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
{This is not a markup extension!}
</Button>
相关文章推荐
- WPF学习系列012: 2.7.4 XAML 扩展部分
- WPF 学习之标记扩展
- 2.6 wpf标记扩展
- WPF学习:4.类型转换和标记扩展
- WPF学习系列 MVVM设计模式 二 简单的增删改
- WPF学习系列 MVVM设计模式三 简单增删改 添加加强
- Android学习系列(6)--App模块化及工程扩展
- 学习系列之扩展方法
- wpf中xaml的类型转换器与标记扩展
- 浏览器扩展系列————在WPF中定制WebBrowser快捷菜单
- Python 学习笔记(六)正则扩展标记
- php基础系列:从用户登录处理程序学习mysql扩展基本操作
- XAML实例教程系列 - 标记扩展(Markup Extensions)
- 跟着小王学习wpf系列之九 Canvas
- WPF学习系列之七 (样式与行为)
- WPF学习系列011: 2.7.3 更多类型转换
- WPF控件学习系列之五---CanvasPanel控件
- XML可扩展标记语言 -- 学习笔记二
- XAML实例教程系列 - 标记扩展(Markup Extensions)