XAML的几个关键概念

Property Elements

使用单独的XML节点来表示WPF对象的属性值,这样就可以表示比较复杂的对象。

比如

<Button Background="Yellow" />

使用Property Elements就可以这样表示

<Button>
      <Button.Background>Yellow</Button.Background>
</Button>

对简单对象似乎更复杂了,但是如果要表示更复杂一点的对象,比如

<Button>
   <Button.Background>
      <SolidColorBrush>
        <SolidColorBrush.Color>
            <Color A=”255” R=”255” G=”255” B=”255”/>
        </SolidColorBrush.Color>
   </Button.Background>
</Button>

这时候,如果没有Property Elements就很难表示了。


Type Converters

为什么前面的Background既可以用"Yellow"这样简单的字符串赋值,也可以用SolidColorBrush这样的复杂对象赋值呢?是不是WPF引擎做了很多的特殊处理?

其实是WPF内部提供了很多的类型转换类(Type Converter),可以把字符串转换成特定的数据类型,比如前面Background就是Brush类型。这样,就可以把常用对象用字符常量进行定义,方便使用.这种做法具有可扩展性,不需要硬编码。

Markup Extensions

就像PHP和ASP等语言一样,为了实现HTML和代码的混合编写,需要在使用特殊的代码标记,比如“<%%>”。同样,在XAML里,使用的是“{}”。在花括号里的,就是.NET类对象,只是用法比较单一,就是简单的函数调用的样子,而没有流程控制,看起来不那么像常见的代码。比如

Content="{Binding Path=Height, RelativeSource={RelativeSource Self}}"

在XAML里,Markup Extensions主要用于对象的引用和数据绑定。

可以设想一下,如果没有Markup Extensions,纯粹使用XML来表示以上功能也是可以的。比如

<Button.Content>
      <Binding Path="Height">
            <Binding.RelativeSource>
                   <RelativeSource>
        Self
...

可以看到,使用XML来表示的话,非常冗余。所以,我想Markup Extensions的使用,就是为了简洁。如果把XML换成JSON的话,也许就可以不用Markup Extensions了。






































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值