闲话WPF之六(XAML的标记兼容性(Markup Compaibility))

继续XAML的话题,在前一个Post当中简单介绍了XAML的类型转换器(TypeConverters)。这次介绍一些XAML标记兼容性(Markup Compatibility)的相关内容。

利用XAML标记兼容性实现更加强大的注释功能

写过XAML的朋友应该都知道:在XAML中可以通过<!--****-->标记来实现注释。但是,利用XAML标记兼容性,还提供了其它更加强大的注释功能。
<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:mc=http://schemas.openxmlformats.org/markup-compatibility/2006
    xmlns:c="Comment"
    mc:Ignorable="c">
   <Canvas>
    <Button c:Width="100" Height="50">Hello</Button>
   </Canvas>
</Window>

看见了Width前面的c前缀吗?它的作用就是注释掉Width属性。是不是感觉比标记注释的方法简单。而且这个c前面不但可以应用在属性上,也可以直接应用在实例上,如下:

<Window
    xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
    xmlns:mc=http://schemas.openxmlformats.org/markup-compatibility/2006
    xmlns:c="Comment"
    mc:Ignorable="c">
 <Canvas>
    <c:Button Width="100" Height="50">Hello</c:Button>
 </Canvas>
</Window>

上面的代码就全部注释掉了Button实例。当然,这种方法不建议在最后的发布XAML文档中出现。只适合在XAML文档的开发过程中使用。

XAML标记的向后兼容性

XAML支持XAML文档的向前和向后兼容性。为了帮助说明XAML标记的向后兼容性,我们看一个自定义的View类,其中定义了一个Color类型的颜色属性Color_Prop。

public class CLYLView
{
        Color _color;        
       public Color Color_Prop { get { return _color; } set { _color = value; } }
}

很简单,在XAML中,我们可以如下使用这个CLYLView类:

<CLYLView Color=”Red” xmlns=”… assembly-V1-uri…”>

注意其中的xmlns=”… assembly-V1-uri…”,这就是一个所谓的XmlnsCompatibleWith属性。通过它我们指定了包含CLYLView的特定Assembly。

现在,我们向V2版本的CLYLView添加了一个Content属性。如下所示:

public class CLYLView
{
        Color _color;
       Content _content;
       public Color Color_Prop { get { return _color; } set { _color = value; } }
       public Content Content_Prop { get { return _content; } set { _content = value; } }

}

现在我们可以这样使用V2版本的CLYLView实例:

<CLYLView Color=”Red” Content=”Unknown” xmlns=”... assembly-v2-uri…”/>

但是,我们仍然希望在V2版本的CLYLView支持V1版本。满足这种需求,我们可以用XmlnsCompatableWith声明一个新的Assembly与老的Assembly兼容。XAML加载器看到了XmlnsCompatableWith属性,就会把默认地把所有对V1的引用处理为V2的引用。

向后兼容最大的一个好处就是:当我们只有新版的 Assembly 时,所有对老版 Assembly 的引用仍然是可读的,不会出现任何的错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值