首先,这两者使用的namespace是不同的,不要以为都是<Canvas />作为根元素那就是同一个类,其实从XML语义的角度来说不同namespace的同名节点代表着不同类别的实体。Silverlight的默认namespace是http://schemas.microsoft.com/client/2007,而WPF的默认namespace则是http://schemas.microsoft.com/winfx/2006/xaml/presentation。有趣的是,WPF是不兼容Silverlight文档的,也就是说一个具备Silverlight namespace的文档用WPF方式直接打开XAML的话就会立即抛出异常,然而反过来做则是可以的。如果在Silverlight调用的XAML中使用WPF或Silverlight以外的namespace,则会抛出异常,这说明了Silverlight不是没做namespace检查,而是刻意兼容WPF文档的。

其次,这种兼容并不意味着完全一致的呈现方式,其实两者对于同样的XAML在呈现上是会有略微差别的。我现在发现的一个细微差异是关于StrokeThickness的“溢出”效果的。首先说说Rectangle吧,假设一个长宽都是100的Rectangle,而它的StrokeThickness从0向50增长,那么你可以看到其边框的变化是从无到有,从最细到完全填充整个矩形,在这个过程中边框的延伸都是向矩形内部方向的,没有对外溢出。然而如果StrokeThickness超过50继续增长呢?这时候WPF与Silverlight的表现就有所不同了,WPF表现为与StrokeThickness等于50时一致,没有任何变化;Silverlight表现为矩形的长宽自动扩大为StrokeThickness的两倍,以确保相对的两条边框是不会互相重叠的,因此矩形不断向外“溢出”。注意“溢出”是以矩形的中点为变换(Transform)中点(Center Point)的,也就是说向上下左右四个方向等距离延伸。

我们再来看看Ellipse,同样先创建一个长轴和短轴都是100的Ellipse,然后开始增加StrokeThickness,直到超过50。Silverlight的表现和之前的Rectangle一样,那就是向外“溢出”,不过变换中点变成了左上角,扩展后的圆形向右下延伸了。WPF则更奇怪一些,同样的“溢出”问题,不过根据原来100*100的区域进行了类似Clip(剪裁)的效果。也就是说,如果StrokeThickness为200,那么这时候圆的直径为200,然而因为Ellipse的长宽都设置为100,因此就剪裁出左上角100*100的区域,你只能看到左上角的1/4圆。

看到Ellipse的效果后,我们可以反过来解释Rectangle的,其实WPF中的Rectangle不是不“溢出”,而是“溢出”后经过剪裁就和没有“溢出”一样。我们发现了的Silverlight与WPF差异,也就在于“溢出”后是否对区域进行剪裁。

这时候使用Expression Design做设计的朋友就要注意了,因为Expression Design导出的XAML无论选择WPF还是Silverlight,其namespace都是WPF的,虽然都能正常打开,但在Silverlight中看到的效果可能就与你想要的效果有所差别。

最后,有兴趣关注Silverlight的朋友,欢迎订阅我的blog:

  • Cat in Chinese (feed)
  • Cat in dotNET (feed)

转载于:https://www.cnblogs.com/cathsfz/archive/2007/11/19/964895.html

Silverlight 与 WPF 的一些差异相关推荐

  1. 分享Silverlight/Windows8/WPF/WP7/HTML5一周学习导读(5月6日-5月12日)

    分享Silverlight/Windows8/WPF/WP7/HTML5一周学习导读(5月6日-5月12日) 本周Silverlight学习资源更新 Beginning Silverlight 4 i ...

  2. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月25日-7月1日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月25日-7月1日) 本周Silverlight学习资源更新 用Silverlight做淘宝应用 往事如锋 基于 Si ...

  3. silverlight,WPF动画终极攻略之白云飘,坐车去旅游篇(Blend 4开发)

    原文:silverlight,WPF动画终极攻略之白云飘,坐车去旅游篇(Blend 4开发) 这章有点长,所以我分成了两章.这一章主要是准备工作,差不多算美工篇吧,这章基本不会介绍多少动画效果,主要讲 ...

  4. Silverlight 和WPF的Composite Guidance(Prism V2)发布了

    Microsoft 模式和实施方案小组最近发布了第二个版本的"WPF 复合应用程序指南",这一新指南旨在充分利用 WPF/Silverlight 的功能和编程模型.同时,团队还根据 ...

  5. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月24日-9月30日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月24日-9月30日) 本周Silverlight学习资源更新 解决"Chrome提示:Silverligh ...

  6. silverlight,WPF动画终极攻略之番外 3D切换导航篇(Blend 4开发)

    silverlight,WPF动画终极攻略之番外 3D切换导航篇(Blend 4开发) 原文:silverlight,WPF动画终极攻略之番外 3D切换导航篇(Blend 4开发) 这篇介绍的是3D导 ...

  7. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(7月30日-8月5日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(7月30日-8月5日) 本周Silverlight学习资源更新 Silverlight 之Control and Use ...

  8. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月15日-10月21日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月15日-10月21日) 本周Silverlight学习资源更新 Silverlight + DomainServi ...

  9. 在Silverlight 和WPF中使用预编译指令 if..else..endif (译)

    下面的是中文翻译,有些扯淡的话就略过了,想看原文,请到这里 对于预编译指令,作者分成了几篇文章来讲解的.鉴于翻译后的文字较少,我把作者的几篇合为了一篇.下面进入正题. 一.总揽: 想要编写特定平台的代 ...

  10. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月17日-9月23日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月17日-9月23日) 本周Silverlight学习资源更新 Silverlight动画设计中对平移动画的一点体会 ...

最新文章

  1. 分布式缓存技术memcached学习(一)——linux环境下编译memcahed
  2. python自学用什么书好-适合python基础学习的好书籍
  3. 【收藏】严重影响IDEA启动速度的插件
  4. Java和WebSocket开发网页聊天室
  5. jQuery Mobile移动网站
  6. 程序清单3-1 测试能否对标准输入设置偏移量
  7. 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)
  8. 深度装机大师一键重装_笔记本怎么重装系统?笔记本自己如何重装系统?
  9. 为什么新装的mysql5.7服务无法启动_Mysql5.7为什么无法启动?请大家帮忙
  10. C语言标准库中常见字符串处理函数
  11. android 下拉框大全,Android 下拉列表Spinner
  12. CentOS 5.2 LVM 新增加一块硬盘的方法
  13. authware课件
  14. lintcode java_Lintcode-java版本
  15. Delphi 导出Excel功能
  16. PHP 判断一个数是否是质数
  17. 3种结构ZnO基半导体纳米复合材料-图文详解
  18. Mono.Cecil
  19. STP配置 HSRP配置 端口追踪
  20. 零门槛人像转卡通、GIF表情包,这个项目不仅开源,还做成了小程序

热门文章

  1. MacOS如何修复磁盘权限
  2. Mac小白入门小技巧
  3. 专访1药网董事长于刚:若没刘峻岭 就没我后面创业的精彩
  4. Python基础之赋值运算符
  5. 基础算法----实现反转字符串
  6. SQL Server-聚焦移除Bookmark Lookup、RID Lookup、Key Lookup提高SQL查询性能(六)
  7. 通信工程领域当前的主流技术及其社会需求调查报告
  8. jiangdongsheng
  9. Rootkit之ntrootkit的配置使用
  10. jqGrid Pager、Navigator和自定义按钮(转)