一晃从Wpf转到sl也有半年多了,总想总结一下wpf和sl的差异,今天终于下笔。

首先来个整体图:

通过上图可以发现其实sl只是使用了wpf的一小部分,只是sl依赖的freamwork有很大部分都一样。

1.sl中未提供的wpf功能

sl 不支持流文档。

神马是流文档?

流文档根据运行时变量(例如,窗口大小、设备分辨率和可选的用户首选项)来动态调整和重新排列文档内容,而不是设置为一个预定义的布局。 此外,流文档还提供一些高级文档功能,例如,分页和分栏。 本主题概述了流文档及其创建方式。

相关类:FlowDocumentReader

sl不支持动态资源,对于 XAML 中所有键资源的资源引用都是静态的。

2.sl中有限支持的wpf功能

sl中的数据绑定不提供以下功能

里面不支持Dataset

不支持直接绑定到 XML 数据或 XPath 绑定。

BindingMode.OneWayToSource 绑定

针对源和目标的单独通知随针对绑定的专用 NotifyOnSourceUpdated 或 NotifyOnTargetUpdated 属性(以及相关事件)更新

Triggers

WPF (尤其是在 .NET Framework 3.5 中)使用触发器概念。触发器支持您在事件发生时或属性更改时进行属性更改或开始操作。Silverlight 对触发器的支持局限于将 EventTrigger 对象用于 Loaded 事件和 BeginStoryboard 操作。但是,通过使用 VisualStateManager 模型,可以实现在先前的 WPF XAML 中使用触发器的任何情形。

路由事件

wpf引入了路由事件概念,在这个概念中,某个事件可由元素树中的多个处理程序处理,而不只是启动了该事件的对象。sl为一小部分的事件包括路由事件概念。但是,sl不支持创建新的路由事件,此外sl不包括preview事件或路由事件的类处理。sl可以重新处理已标记为处理的路由事件,但是只能通过代码实现。

Command

sl中只有少数UI元素支持基础命令结构。但是可以通过行为这种方式解决。

sl里面使用command模型的时候也要注意 不会自动触发canexecute方法,要通过调用canexecuteChanged来更新状态。

可冻结对象

sl不在其对象模型中包括 Freezable 对象。

资源

sl中不存在匿名资源(除了在generic.xaml) 必须指定资源名称,UIElement不能作为资源,ResourceDictionary.MergedDictionaries 中的ResourceDictionary 不应包含key

WPF&Silverlight5 常用功能差异的更多相关文章

  1. WPF DataGrid常用属性记录

    WPF DataGrid常用属性记录 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. CollapseRowGroup:闭 ...

  2. Keil的使用方法 - 常用功能(二)

    Ⅰ.概述 上一篇文章是总结关于Keil使用方法-常用功能(一),关于(文件和编译)工具栏每一个按钮的功能描述和快捷键的使用. 我将每一篇Keil使用方法的文章都汇总在一起,回顾前面的总结请点击下面的链 ...

  3. WPF 3D 常用类(1)

    原文:WPF 3D 常用类(1) 几何数据相关类 Geometry3D 抽象类, 用于定义物体的几何数据, 可用于计算HitTest和BoundingBox MeshGeometry3D Geomet ...

  4. SVN常用功能介绍(二)

    说明 上一章节主要描述了SVN的简介.安装搭建,和项目管理人员对SVN的常用操作. 这章主要讲解,SVN对应角色组员,在实际运用中的常用操作. 将SVN服务器项目导入到开发组员的本地电脑里 方式一: ...

  5. css预处理器 sass和stylus对比以及常用功能

    在众多的css预处理器语言中,sass和stylus算是十分优秀的两个.本文主要针对两者的常用功能做个简单的对比分析.在对比中了解二者的差异,同时帮助大家更好的掌握这两种预处理语言. 本文涉及到的sa ...

  6. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

  7. 对比学习sass和stylus的常用功能

    在众多的css预处理器语言中,sass和stylus算是十分优秀的两个.本文主要针对两者的常用功能做个简单的对比分析.在对比中了解二者的差异,同时帮助大家更好的掌握这两种预处理语言.本文涉及到的sas ...

  8. [WPF]总结一些我在开发WPF时常用的工具

    我从一万二千年前开始写XAML,这么多年用了很多各式各样的工具,现在留在电脑里的.现在还在用的.在写WPF时用的也就那么几个.这篇文章总结了这些工具,希望这些工具可以让WPF开发者事半功倍. 1. V ...

  9. WebStorm 常用功能的使用技巧分享

    WebStorm 是 JetBrain 公司开发的一款 JavaScript IDE,使用非常方便,可以使编写代码过程更加流畅. 本文在这里分享一些常用功能的使用技巧,希望能帮助大家更好的使用这款强大 ...

随机推荐

  1. 【Python】子域名查询脚本

    脚本学习,多写写就会啦,来一发个人编写的超级无敌low的子域名查询脚本 #coding:utf-8 import re import requests import urllib import url ...

  2. scrapy源码分析(转)

    记录一下两个讲解scrapy源码的博客: 1.http://kaito-kidd.com/2016/11/21/scrapy-code-analyze-component-initialization ...

  3. js获取字符串字节的位数

    ifSubUser.getBlength = function(str){ ;i--;){ n += str.charCodeAt(i) > ? : ; } return n; }

  4. How do I use screen on the Linux systems?

    Scope The screen utility provides a way to run a command on a Linux system, detach from it, and then ...

  5. AngularJs学习笔记--Managing Service Dependencies

    原版地址:http://docs.angularjs.org/guide/dev_guide.services.managing_dependencies angular允许service将其他ser ...

  6. 自动化测试之旅--selenium+python--001

    在学习selenium之前,首先感谢网络上的虫师和乙醇老师,或许他们并不知道我这个菜鸟的存在,但是我仍然要感谢他们,因为在学习的路上拜读了许多他们的博客和文章,对于我来说有着很重要的意义,因此在学习之 ...

  7. PaymentServlet代码

    package ${enclosing_package}; import java.io.IOException; import java.util.ResourceBundle; import ja ...

  8. bzoj 5319: [Jsoi2018]军训列队

    Description Solution 最优情况可以是所有人按位置从小到大排序之后依次占到自己 \(K+\) 排名的位置上去 因为每一个休息位置不同,那么一定递增,所以一定存在一个分界点,左边的是往 ...

  9. Hadoop实战之二~ hadoop作业调度详解(1)

    对Hadoop的最感兴趣的地方,也就在于Hadoop的作业调度了,在正式介绍如何搭建Hadoop之前,深入理解一下Hadoop的作业调度很有必要.我们不一定能用得上Hadoop,但是如果理通顺Hado ...

  10. spring整合struts2和hibernate

    1.spring 1.1 jar包 1.2 spring.xml <?xml version="1.0" encoding="UTF-8"?> &l ...