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

来源:互联网 发布:the windows live ID 编辑:程序博客网 时间:2024/05/22 04:53

 在学习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(vs.95).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(vs.95).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)。

原创粉丝点击