您的位置:首页 > 其它

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: