WPF学习系列007: 2.6 标记扩展

 

  •  
    1. 标记扩展,与类型转换器相似,是扩展 XAML 的表达能力的方法。与其不同的是标记扩展提供的是一种显示的、一致的语法调用,因此标记扩展是最好的扩展 XAML 的方法。
    2. WPF 好几个内建的标记扩展,派生于 MarkupExtension 类。
    3. 标记扩展在运行时计算字符串特性的值,并生成一个合适的基于字符串的对象。
    4. 标记扩展的语法格式
    1. 扩展标记类的名称按照惯例,都是以 Extension 后缀结尾,在 XAML 中使用它时,可以不用该后缀。
    2. 定位参数是被作为字符串参数传入扩展类的相应构造函数中的。
    3. 命名参数可以用来在已构造好的扩展对象上设置相应名字的属性。这些属性值可以是标记扩展值自己(使用嵌套的花括号表示),也可以是文本值。
    1. 摆脱花括号:如果需要设置一个属性特性值为字面值字符串(以左花括号开始),可以通过在其之前增加一对空花括号来实现。也可以使用属性元素语法来实现。
  • 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:Nullx:StaticBindingRelativeSource 标记扩展类名称

    PathRelativeSource 命名参数

    SystemParameters.IconHeightHeightSelf 定位参数

    例如:

    <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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值