• Silverlight 4 初学者的10大经典问答

  • http://developer.51cto.com  2010-08-16 09:57  周雪峰 译  51CTO.com  我要评论(0)
  • 在学习Silverlight 4的过程中,Silverlight的最新版本几乎没有指南或图书,我建立了一个列表,这个列表包括十个最经典的问题的解答,当我刚开始学习Silverlight的时候,我总是希望能更容易地找到这些问题的答案。

我正在自学Silverlight / WPF,我打算用它们来实现我在StannardLabs的下一个大项目的一部分:一系列支持WinMo7 / Android / iOS phones的休闲小游戏。学习每个平台是如何工作的,有什么区别,和在每个平台上的应用程序商店的有什么区别成了家常便饭。

在学习Silverlight 4的过程中,Silverlight的最新版本几乎没有指南或图书,我建立了一个列表,这个列表包括十个最经典的问题的解答,当我刚开始学习 Silverlight的时候,我总是希望能更容易地找到这些问题的答案。也许是因为我使用了错误的词汇来搜索,或者,也许有一些事情专业的 Silverlight / WPF开发人员认为很明显,并不需要包括在他们的图书和博客条目里。所以我不能很快地找出这些问题的答案。为了方便大家,我首先对这些问题进行研究。

这是我的列表:

1,在一个应用程序中,我怎样导航到不同的Silverlight内容?

答:这时候,请考虑一下,Silverlight是一种基于Web的技术,所以你真正问的问题是“在一个Silverlight应用程序中,我怎样 建立独立的页面?”很幸运,这意味着你可以参考:Silverlight的使用:Navigation框架和Silverlight页面(http://msdn.microsoft.com/en-us/library/cc838245%28VS.95%29.aspx)。

我找到的最容易的解决方案是使用这些工具建立一个母版页(Main.xaml或类似的其他文件),在它的中间,要放置一个Silverlight的 Frame元素,然后在这个frame里,你要替换你的可交换的页面。在Silverlight中Frame和Navigation如何工作(http://www.flickr.com/photos/50581866@N06/4863500755/)

2,在一个Silverlight应用程序中,我怎样建立一个超链接,来链接到一个Web页面?

答:也是使用Silverlight的Navigation框架,在我的答案里,我主要回答这个个问题:“我怎样在Silverlight中建立超链接,来链接到外部的内容(http://msdn.microsoft.com/en-us/library/cc838245%28VS.95%29.aspx#external_navigation),并在一个Web浏览器中打开它。”这是MSDN中的代码样例,它说明了你要怎么做:
 http://www.microsoft.com"
     Content="Go to Microsoft" TargetName="_new" />

3,在一个Silverlight应用程序中,我怎样打开一个模式对话框窗口?

答:首先,你要知道Silverlight并不是Windows Forms或WPF,它们都为那些过去使用Win32 API的程序员实现了模式对话框的行为。Silverlight是一个跨平台的技术,Silverlight应用程序要在多个环境下运行,所以你过去使用 的一些Win32 API下的行为,它的.NET后裔(Silverlight)将无法使用。所以你过去在WPF下使用的模式对话框工具,在Silverlight下无法使 用。话虽这样说,在Silverlight中,要实现一个和模式对话框类似的用户界面元素是很容易的。这是两个参考资源,说明了如何实现这样的功能:

Silverlight中的模式窗口(http://www.codeproject.com/KB/silverlight/slmodal.aspx)
Silverlight中的可拖动窗口或DataGrid(http://forums.silverlight.net/forums/p/12467/41324.aspx)

4,在一个TextBlock元素中,我怎样把一小段内嵌文本设置成不同的字体样式?

答:从本质上来说,你问的是HTML中的标签在XAML / WPF中的等价物,以便于你可以在一个TextBlock元素里选择性的应用各种样式。幸运的是,这个等价物的确存在——它被称为Run元素,你可以在 TextBlock元素的文本内容里的任何地方使用它。这是一些在Silverlight中使用Run元素的例子(http://stackoverflow.com/questions/2435880/is-it-possible-to-seletively-color-a-wrapping-textblock-in-silverlight-wpf),这是其中一个例子:

Republican
        
        
             Democrat

5,对于Silverlight来说,实现session-specific存储的最好方法是什么?

答:因为我们使用HTTP——一个无状态的协议,所以这个问题并不像看上去那么棘手——如果你和我一样是一个ASP.NET的开发人员,那么你应该比那些编写桌面应用程序的程序员更了解session的概念和不同的状态

这是个好消息:Silverlight能像桌面应用程序那样处理状态!在一些“轻量级”的场景下,你可以在你的application类的几个公共 属性上存储你的session。在一些“中量级”的场景下,你可以创建一个静态的session类。在一些“重量级”的场景下,你可以使用独立存储的方 式。如果你想了解更多的信息,可以查看Silverlight的官方论坛中的这个帖子(http://forums.silverlight.net/forums/p/65328/161221.aspx)。

6,在Silverlight应用程序中,有什么令人信服的理由一定要使用RIA-service来代替普通的WCF service吗?

答:如果你过去读过《Microsoft .NET: Architecting Applications for the Enterprise》(即使你不是一个企业级应用程序的开发人员(我也不是),你也应该读一下关于设计工具和各种模式的内容),那么你应该知道每个设计 问题(比如这个问题)的答案总是“要根据具体情况而定”的。Shawn Wildermuth的这篇文章比我编排的要好得多:主导你选择一个数据服务的实现(而不是另一个)的一些因素(http://wildermuth.com/2009/09/29/Choosing_a_Data_Access_Layer_for_Silverlight_3),但是为了回答这个问题,我会把它们总结一下:

如果你的目标是增强一个Silverlight应用程序,让它运行的更快,那么你应该使用RIA services,因为和其他替代的解决方案相比,你不需要写很多的代码,也不需要担心WCF跨域的策略文件,变更跟踪,等等。

7,反之,在Silverlight应用程序中,你为什么选择WCF service而不是RIA-service呢?

答:我决定选择普通的WCF service而不是RIA-service,因为,关于这个问题我已经读过这篇文章了(http://stackoverflow.com/questions/879725/what-is-net-ria-services),在你需要支持Silverlight以外的客户端(对我而言,就是iOS和Android客户端)的情况下,WCF是一个更好的选择。另外,如果你已经有一个现成的WCF service,你应该使用这个服务,而不是用RIA service来重写所有的东西。

8,RIA-services能轻松地在非Silverlight应用程序中重用吗?

答:答案很明显是“不能”,但是我一直是一个Silverlight的新手,所以可能我是错的。如果你需要支持其他的客户端,尤其是非.NET framework上的一些客户端,我建议你使用WCF服务。

9,我怎样在运行时动态地把XAML元素添加到我的应用程序中?

答:有数百种不同的方法可以在运行时把新的XAML元素添加到你的Silverlight应用程序中。我个人最喜欢的是这个例子,它说明了你怎样使用LINQ来在Silverlight应用程序中建立一个附加的data-driven元素(http://www.silverlight.net/learn/videos/all/use-linq-to-dynamically-create-xaml-elements/)。关于如何用编程的方式添加新的XAML元素,如果你正在找一个的简单的指南,我可以提供给你一个:“Silverlight控件的动态处理”。(http://dotnetslackers.com/articles/silverlight/Dynamic-Manipulation-of-Silverlight-controls.aspx),它总结的很好。

10,在Silverlight应用程序中,实现表单验证的最好方法是什么?

答:哪里有数据,哪里就一定需要验证。Silverlight自带了验证框架,和ASP.NET自带的验证框架很相似。关于如何入门,这是我找到的一个最好的例子:从入门到精通:Silverlight 3 表单验证(http://www.silverlightshow.net/items/Creating-Rich-Data-Forms-in-Silverlight-3-Validation.aspx)。

别忘了实践一下这些方法,我希望在社区中这些问题可以得到更好的解答,或者,如果能提出一些其他的更好的问题,那就更好了。

转载于:https://blog.51cto.com/1565941/536717

Silverlight 4 初学者的10大经典问答相关推荐

  1. c 语言从大到小排序算法,10 大经典排序算法(动图演示+ C 语言代码)

    原标题:10 大经典排序算法(动图演示+ C 语言代码) 来源:C语言与CPP编程 以前也零零碎碎发过一些排序算法,但排版都不太好,又重新整理一次,排序算法是数据结构的重要部分,系统地学习很有必要. ...

  2. 电影9 10大经典电影

    10大经典电影(人生篇) 1.<肖申克的救赎> 2.<百万金婴> 3.<悲惨世界>1958年版 4.<辛德勒的名单> 5.<阿甘正传> 6. ...

  3. 中国历史上10大经典遗言

    发信人: wbinbin (麒麟王), 信区: History 标  题: 中国历史上10大经典遗言 发信站: BBS 同舟共济站 (Sun Aug  8 15:49:57 2004), 站内 标  ...

  4. MySQL的10大经典错误

    MySQL的10大经典错误 Top 1:Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行) 解决问题的思路: 首先先要考虑在我们 MySQL 数据库参数文件里 ...

  5. 计算机大错误,计算机10大经典错误[图解](5页)-原创力文档

    计算机 10 大经典错误[图解] 10.DOS 的 Abort,Retry, Fail?错误 85 年以后出生的人可能不知道 DOS 是什么了,只有那老家伙还知道这是什么.我还记得当 时的我对于 Ab ...

  6. 把所有圆圈连接起来的游戏_适合幼儿园玩的10大经典游戏

    原标题:适合幼儿园玩的10大经典游戏 1.木头人 游戏规则:小朋友手拉手围成一个圆圈,边走边念儿歌"我是一个木头人,不会说话不会动,看谁坚持一分钟"念到最后一个字时所有幼儿摆出造型 ...

  7. 算法大总结之----10大经典排序算法(从小到大排列)

    目录 1. 冒泡排序 1.1. 算法讲解 1.2. 代码实现 2. 选择排序 2.1. 算法讲解 2.2. 代码实现 3 插入排序 2.1. 算法讲解 2.2. 代码实现 4 希尔排序 2.1. 算法 ...

  8. matlab中gad,10大经典算法matlab代码以及代码详解【数学建模、信号处理】

    [实例简介] 10大算法程序以及详细解释,包括模拟退火,禁忌搜索,遗传算法,神经网络.搜索算法. 图论. 遗传退火法.组合算法.免疫算法. 蒙特卡洛.灰色预测.动态规划等常用经典算法.是数学建模.信号 ...

  9. 机器学习10大经典算法详解

    "数据+算法=模型". 面对具体的问题,选择切合问题的模型进行求解十分重要.有经验的数据科学家根据日常算法的积累,往往能在最短时间内选择更适合该问题的算法,因此构建的模型往往更准确 ...

最新文章

  1. proxy负载均衡、读写分离
  2. hbuilderx制作简单网页_简单的手机网页制作教程
  3. addeventlistener事件第三个参数_JavaScript 事件与事件处理机制
  4. 单位与单位的换算(二)
  5. qt 进度栏_HTML5进度栏
  6. 「代码随想录」精讲了18道力扣上贪心算法经典题目,总结了这些!
  7. mac 思科 链路聚合_链路聚合笔记
  8. SVN Clean up 失败和SVN is already locked情况解决
  9. 基于HSLcommunication的SiemensTools 西门子PLC 调试工具
  10. 更新三转的skills.txt
  11. QT3D场景快速绘制入门学习
  12. java计算机毕业设计 - 大转盘抽奖微信小程序
  13. HTML文字溢出出现.....
  14. Promise 基本使用详解
  15. Word中设置不同页面的页眉不一样的方法(页脚、页码同理)
  16. 关于论青少年尽早学少儿编程之说
  17. 锐捷智能感知“安全卫士”守护广东2000个基层医疗机构信息安全
  18. 团建游戏----啤酒大赛
  19. c4d python 插件_【影视后期必知干货!C4D插件的安装及类型合集】- 环球网校
  20. ModStartCMS v2.6.0 用着真得劲,头发也浓密了

热门文章

  1. 公众号jdk 获取手机号_怎样快速获取使用国庆节公众号文章的素材和模板
  2. 快速入门 Pinia 状态管理库
  3. docker部署express项目
  4. mysql sql注意事项_mysql sql优化及注意事项
  5. java 局部变量垃圾回收_java局部变量对垃圾回收的影响
  6. mysql 参照完整性规则_MySQL存储引擎你们知道多少?
  7. 组播vlan_【参与方式】耗时10小时编撰(下)带你轻松通关组播知识点!
  8. 解决 Beyond Compare 3 许可证密钥被撤销
  9. redis数据结构小结
  10. 首个单芯片超小封装I2C转PWM解决方案