浅析WPF与Silverlight的关键区别

开发 后端
本文将讨论的是WPF与Silverlight的关键区别,希望本文能对大家更好的了解这两者有所帮助。

Silverlight刚诞生时,很多人只是简单的理解它为Flash的竞争对手。但是随着微软的进一步工作,Silverlight的应用范围越来越广泛,甚至很多人将它与WPF混为一谈。本文将为大家细细道来。

当WPF和Silverlight越来越受到.NET开发人员重视的时候,两者间的界限也越来越模糊。回顾六月,Wintellect发布了鲜为人知但极其重要的“微软WPF和Silverlight之异同白皮书”。我们建议GUI开发人员要通读全部69页,我们会列出主要的观点及其对相关业务范围开发人员的影响。

依赖关系属性是两个平台的重要组成部分,使用PropertyMetadata可代替普通字段来保存属性。Silverlight仅提供了该类,而WPF却有若干子类型可用。

UIPropertyMetadata添加了一个标识符,用于决定“在使用了元数据实例的地方,是否应该禁播依赖关系属性的动画”

FrameworkPropertyMetadata添加一个标识符来指示影响管道的那些属性,包括控制管理、测量和呈现。它也可用于指示属性是否允许数据绑定以及默认的类型。由于Silverlight不支持该类,因此所有的数据绑定在默认情况下都是单向的。

Silverlight不支持隧道事件。两个平台都支持Direct事件和Bubbling事件。

WPF支持多种类型的触发器。一个简单的触发器附加到依赖关系属性后,当触发器条件满足的时候便会自动修改样式。除了简单触发器以外,WPF也支持可响应路由事件或使用数据绑定的触发器。

Silverlight使用视觉状态管理器代替触发器。WPF当前并不提供该技术,但会在WPF 4.0中添加。

Silverlight仅支持若干标记扩展。除了通用的StaticResource、Binding和TemplateBinding扩展以外,WPF还添加了DynamicResource、RelativeSource、x:Type、x:Static和x:Array。

有很多键盘和鼠标事件仅在WPF中可用。由于为数众多的关系,我们稍后会列出完整列表。

关于UIElement类和IInputElement接口。当某个控件被禁用的时候,WPF使用它们来禁用所有的子控件。Silverlight不提供这种功能,所以开发人员不得不手动遍历控件树。

在通信方面,Silverlight仅限于BasicHttpBinding和PollingDuplexHttpBinding。当然,WPF支持所有的绑定。

***,打印功能在两者之间也完全不同。WPF可直接打印可视化树而Silverlight则依赖浏览器实现。

责任编辑:彭凡 来源: InfoQ
相关推荐

2017-10-26 14:59:47

MybatisHibernate数据库

2009-09-22 16:14:41

ViewBox组件

2009-09-27 13:38:03

Silverlight

2009-11-26 13:12:16

Silverlight

2009-09-28 10:35:45

Silverlight

2009-04-21 13:14:33

SilverlightWPF扩展

2009-09-24 13:39:06

Hibernate VHibernate P

2010-07-05 17:44:31

ER图与UML图

2010-05-17 16:23:22

IIS 6.0

2009-12-28 14:40:08

WPF属性

2009-08-13 17:30:30

C#构造函数

2016-09-07 14:54:19

大数据BI

2010-04-08 09:28:28

WPFWinForm

2009-07-08 17:59:51

JDK JRE

2009-04-16 09:24:48

TierLayer系统架构

2023-09-20 17:20:46

增强现实ARVR

2009-09-22 18:39:02

Silverlight

2013-05-03 10:21:53

CentOSRedHat Linu

2024-04-10 09:08:05

WPFWinForms.NET

2022-08-28 20:50:29

算法模型机器学习
点赞
收藏

51CTO技术栈公众号