概述
Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。
本文为系列第一篇创建一个基本的Silverlight 2应用,不能免俗,从最简单的Hello Word 开始。
建立项目
安装完Silverlight 2 Beta 1之后打开VS2008,打开新建项目对话框,可以看到Silverlight Application项目模板。
Silverlight应用不能够独立运行,之后弹出的对话框中可供我们选择创建一个ASP.NET Web Site或者Web Application Project用来托管Silverlight应用程序。
这里我们选择创建一个Web Application Project,创建完成后的项目结构如下所示:
理解.xap文件
在建立一个Silverlight应用程序后,我们什么都不做,直接编译一下整个解决方案,可以看到在资源管理器中多出了一个ClientBin的文件夹,并在下面添加了一个TerryLee.SilverlightDemo2.xap的文件。
该文件是一个标准的.NET程序集,在编译的时候所有的XAML标识和资源文件如图片等都会包含在里面,采用了标准的Zip压缩算法,以减少客户端下载的文件体积。拷贝一份该文件,并且修改后缀名.xap为.zip,并且解压缩,可以看到里面包含了一些dll文件和一个AppManifest.xaml:
再打开TerryLee.SilverlightDemo2TestPage.aspx文件,在页面的顶部引入了System.Web.Silverlight程序集,支持<asp:Silverlight/>控件:
<%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls"
TagPrefix="asp" %>
<asp:Silverlight/>控件的声明如下,其中属性Source属性指定了刚才编译生成的.xap文件的路径:
<asp:Silverlight ID="Xaml1" runat="server"
Source="~/ClientBin/TerryLee.SilverlightDemo2.xap"
Version="2.0" Width="100%" Height="100%" />
创建一个Hello Word程序
现在我们创建一个简单的Hello Word Silverlight程序,使用如下XAML创建一个简单的按钮:
运行后效果如下:
为按钮添加Click事件,在XAML编辑器中输入事件名称Click之后,再按Tab键将会使用默认的命名方法生成事件处理方法:
打开Page.xaml.cs文件后,可以看到已经生成了对应的事件处理方法,现在就可以用熟悉的C#来编写处理程序了,如单击按钮时我们改变按钮的背景色和文字:
private void myButton_Click(object sender, RoutedEventArgs e)
{
this.myButton.Content = "Clicked!";
this.myButton.Background = new SolidColorBrush(Colors.Red);
}
再运行上面的程序并单击按钮,按钮的文字及背景色发生了变化:
结束语
本篇文章是使用Visual Studio 2008开发Silverlight 2应用程序的一个入门,相信大家都已经看过ScottGu的文章已经有所了解。但是为了整个系列完整起见,还是做了一下重复的劳动。
下一篇:一步一步学Silverlight 2系列(2):基本控件
posted @ 2008-03-07 21:20
TerryLee 阅读(36335)
评论(118) 编辑 收藏 网摘 所属分类:
[03] 银光点亮世界
发表评论
为什么我安装SILVERLIGHT后,打开VS2008还是没有SILVERLIGHT模板呢?
#103楼[
楼主]2008-03-18 18:41 |
@+Trevio
嗯,下载冯岩给出的链接之后,再安装就没有问题了
@Terry
现在 vs2008 与 sliverlight 已经集成了, 在 web application 中会有多个 page, silverlight 里会有多个 xaml 文件, silverlight application 编译后生成的是 xap 格式文件, 请问在不同的 webpage 里如何运用不同的 xaml?
谢谢
#106楼[
楼主]2008-03-20 10:48 |
@Sam Xie
现在可以使用UserControl,如果要在多个页面的话,可能需要建立多个Silverlight项目,以便生成不同的xap文件:)
@ Terry
看了上面的回复, 生成不同的 xap, 这没错, 如果后一个 silverlight 需要用到前一个 silverlight 的数据, 怎么传递呢?
谢谢
#108楼[
楼主]2008-03-22 21:32 |
@关注silverlight
没明白你要用前一个“Silverliht”的什么数据?Silverlight是一个客户端技术,数据只能通过Web Service等方式来获取
新建一个web application中的App.xaml是干什么用的啊
同时请教另外一个问题:我如何通过坐标来确定控件的位置?
谢谢!!!!
没有学习过sliverlight,请问这只能在vs2008里面运行吗?我现在还在用vs2005,可以安装吗?安装完会出现相应的模版吗?
#111楼[
楼主]2008-03-24 21:22 |
@332
往后面看吧,也许看了后面几篇文章你就找到答案了!
#112楼[
楼主]2008-03-24 21:22 |
@jazz
只能在VS2008下
你好!急找你
qq:81471528
MSN:qiehuaiyan@163.com
请教一个问题,我是按照搂主的方法来做的。后来运行程序,按F5,结果就崩掉了。断在了 Page.xaml.cs文件中的 InitializeComponent();这句。弹出一个错误框。信息为:
A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in System.Windows.dll
Additional information: System.Exception: 致命的なエラーです。 (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
場所 MS.Internal.XcpImports.ConvertStringToTypedCValue(IntPtr pContext, UInt32 cClrTypeName, String clrTypeName, UInt32 cValue, String value, CValue& outVal, Int32& typeIndex)
場所 MS.Internal.SilverlightTypeConverter.ConvertFrom(Object value) [Line: 252683839 Position: 255]
如果是按ctlr+F5运行的话,结果是网页里面无任何内容,就是一片空白。不知道为啥,请楼主指教。
支持lz 按照lz的教程操作的 实现了最终的按钮单击 3Q~~
可以把列子的连接放出来吗
让我真实的体会体会
呵呵
在xaml里,不支持如html里选择一对标记变成粗体显示?
我按照楼主的做出来,运行时,页面出现前台脚本错误,而且看不到效果
前台脚本报错为:Error:Sys.InvalidOperationException: Invalid XAML for control 'Xaml1'. [ClientBin/HelloWorld.xap] (line 1, col 3): illegal xml character
按照楼主的步骤做的,但是按F5运行,弹出下面的错误框:
在 System.Windows.Markup.XamlParseException 中第一次偶然出现的“System.Windows.dll”类型的异常
其他信息: AG_E_PARSER_BAD_PROPERTY_VALUE [Line: 7 Position: 37]
请问这是什么原因啊!
A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in System.Windows.dll
Additional information: AG_E_PARSER_BAD_PROPERTY_VALUE [Line: 9 Position: 31]
我的出这个错误啊
我就加上了button这段代码,vs2008中的设计页面有按钮图像的,但是运行时在浏览器中就是一张空白页,没有任何东西,右键出现silverlight configuration 这是为什么啊!
求救:
第二步:选择创建一个ASP.NET Web Site或者Web Application Project用来托管Silverlight应用程序。
我安装的是VS.net 2008中文版,且安装了silverlight1.0 silverlight2(beta1)版,但我建立silverlight项目时,没有弹出这个窗口来进行选择(所以根本不能做这个实例),而是直接建了个silverlight的项目(这个项目是没法添加*.aspx文件的),请问是怎么回事?
求救:
---
Silverlight应用不能够独立运行,之后弹出的对话框中可供我们选择创建一个ASP.NET Web Site或者Web Application Project用来托管Silverlight应用程序。
---
我建立silverlight项目时,没有弹出这个窗口来进行选择,请问是怎么回事?
silverlight 现在乱七八糟的版本,写文章的人也是乱七八糟的版本,
我昨天按照你的方法,装了一天,今天要写个图像展示的页面,正好可以用下
谁知道你那个简单的例子都没成功,页面就一个空白,页不报个错什么的,
小弟,跪求你知道一下,是不是安装的问题呢?
“运行后一片空白”的解决方案:
在Silverlight中需要使用xap、XAML文件类型,如果您想在IIS服务器上使用Silverlight程序,所以必须在IIS中注册xaml和xap的MIME文件类型。打开IIS->站点属性->HTTP头->MIME类型->新建:
扩展名: .xap
MIME类型:xapapplication/x-silverlight
扩展名: .xaml
MIME类型:application/xaml+xml
我按照你说,刚开始创建个项目模板后运行没有出现bin,而是提示错误.
错误 1 当前上下文中不存在名称“InitializeComponent” E:\silverlight\SilverlightApplication1\SilverlightApplication1\App.xaml.cs 23 13 SilverlightApplication1
错误 2 当前上下文中不存在名称“InitializeComponent” E:\silverlight\SilverlightApplication1\SilverlightApplication1\Page.xaml.cs 18 13 SilverlightApplication1
同48楼一样的问题
错误 1 当前上下文中不存在名称“InitializeComponent” E:\silverlight\SilverlightApplication1\SilverlightApplication1\App.xaml.cs 23 13 SilverlightApplication1
错误 2 当前上下文中不存在名称“InitializeComponent” E:\silverlight\SilverlightApplication1\SilverlightApplication1\Page.xaml.cs 18 13 SilverlightApplication1
解决了。应该是SDK的版本问题,下载一个beta2的版本就可以了
我是只用expression blend2.5做UI,后台我不会,请问我该学哪些东西呢,那我做出来的东西是不是只有懂silverlight的人才能接着开发程序代码?谢谢,我刚刚了解silverlight。请多谅解!
#137楼[
楼主]2008-07-30 00:57 |
@tulip
这个答案我想不用回答吧,不懂Silverlight的人怎么开发程序呢?呵呵
如果做UI,还需要对控件的机制做一些了解,如Style、ControlTemplate、VisualStateManager等。
这个……不是Hello World啊……-_-|||
#139楼[
楼主]2008-07-30 09:58 |
@麒麟.NET
o(∩_∩)o...
我装了silverlight2beta2了,VS2008也装了,在VS里新建project的时候project type 里怎么没有silverlight?请指教,非常感谢
#141楼[
楼主]2008-07-31 01:12 |
@tulip
很难说是什么问题,卸载重装一次试试看吧:)
我在网上查了查说没装alpha for silverlight2,装上后倒是在project type里有silverlight工程了,但还是不能建工程,报错,那我卸载重装一下在试试看,谢谢terry
#143楼[
楼主]2008-08-01 00:51 |
@tulip
不用客气,如果还是不行,把错误信息贴上来,大家一起帮你分析一下:)
#145楼[
楼主]2008-08-01 10:10 |
@tulip
:)
第一个弹出框报的错:
The file TestPage.html.js could not be found within the project templates.contining to run, but the resulting project may not build properly
第二个弹出框报的错:
The project file'C:\Documents and settings\tulipwang.BEIJING\Local setting \temp\tiopagm5.qac\Temp\SilverlightProject10.vbproj'can not be opened.
The project type is not supported by this installation。
还有杀毒软件AVG还报有威胁病毒好像叫hidden Extension .js。
郁闷呀,还望老师指点。。。
是不是我该把VS卸载以后连C盘programfiles里官运VS的所有文件都删掉再重装一次
terry,麻烦你告诉我我现在要学liverlight,需要装那几个软件,我不做后台,制作UI,动画和部分的事件
#148楼[
楼主]2008-08-01 11:48 |
@tulip
如果只做UI,安装Expression Blend 2.5就行了。
#150楼[
楼主]2008-08-01 13:26 |
@tulip
用Silverlight 2还需要写JS事件脚本吗?不解
#152楼[
楼主]2008-08-06 13:28 |
Error 1 Could not load file or assembly 'System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. 系统找不到指定的文件。怎么解决?
#155楼[
楼主]2008-08-13 21:45 |
@www_scott
不好意思,回复的晚了。
N个月前安装了SILVERLIGHT,安装的时候碰到了很多问题, 照李老师的做了几个例子,项目忙,没有接着学习,现在又回头来学习~~~~~~~李老师,要多多指教~
#157楼[
楼主]2008-08-27 09:49 |
@happygrass
不用客气,随时交流。。。
装了一天终于把silverlight装的跟LZ的一样了。。不过我装的是中文版的。哈哈。 以后天天来学习,不会的地方LZ要多多帮忙啊
请问如何不用装VS2008等工具,直接用命令行编译?还有必须要用ASP.NET?
Lee,您好,请问一下,我今天刚装上了VS2008,silverlight也是最新的2.0版本,但我建立一个新的silverlight项目的时候,没有让我选择托管Silverlight应用程序的弹出框,出来之后有一些Js文件,这个是不是主要是用JS开发的呢?还有就是如果我要转换成像你这样的开发,我该怎么做?(因为觉得你的例子写的很好,所以。。)
麻烦了。。
问题解决了
是由于安装的东东不对。。
开始学习了。。
还是感谢。。。
#163楼[
楼主]2008-10-28 15:23 |
@GB1973
不用客气,呵呵
楼主:我机器装了Vs2005中文版 和Vs2008(Enu)
安装了silverlight_chainer.exe,按照你的步骤建立了工程但是出现问题:
Problem Loading Help
The document contains errors that must be fixed before the designer
can be loaded. Reload the designer after you have fixed the errors.
Reload the designer
然后运行不起来!我把Silverlight删除,重新下载还是不管用,上网搜了好久都找不到原因,不知是否是机器上的Vs2005造成的影响,LZ有解决办法吗?
#165楼[
楼主]2008-11-05 09:21 |
@liweic
安装VS2008 SP1了吗?
@TerryLee
首先感谢LZ回复,我已经安装了Vs2008SP1.显示的是:
Microsoft Visual Studio 2008 Microsoft .NET Framework
version 9.0.30729.1 SP Version 3.5 SP1
我按照你介绍的步骤一步步做下来,F5运行以后就出现个页面,左上角显示个"安装Silverlight",可是我已经安装了.(我点击那页面上的安装,再次安装,还是一样的效果).实在不知道怎么办好了...
#167楼[
楼主]2008-11-12 11:18 |
@liweic
你安装的而是Silverlight Tools for Visual Studio 2008哪个版本?
@TerryLee
通过LZ的启发,发现是安装Silverlight Tools工具的版本不对造成,现问题已解决,继续学习了.
感谢LZ! ^_^
#169楼[
楼主]2008-11-12 23:45 |
@liweic
不用客气:)
请问下楼主我用VS2005能装Silverlight 2 Beta 1版不?
请问一定要安装VS2008吗?在VS2005下可以吗?
#172楼[
楼主]2008-11-30 23:54 |
@Z-Suker
@齐飞
必须要在VS2008下才可以的。
--引用--------------------------------------------------
TerryLee: @Z-Suker
@齐飞
必须要在VS2008下才可以的。
--------------------------------------------------------
谢谢楼主...VS2008我已经下好了在装呢...现在已经出到beta2但是保险起见我还是先装beta1再装beta2好了~呵呵
@TerryLee
那個在MyButton_Click的function內, 有沒有加this似乎都能正確跑出結果, 那該怎判斷啥時要不要加this 阿QQ...(我是silverlight新手, 有問題還請大家多多指教..Orz)
为什么 VS 里面的 Silverlight 界面什么都添加不了?
我的是 VS 2008 sp1 + Vista,然后装了 Silverlight tool for vs2008
之后 VS 的新建项目左边的列表里面就多了 Silverlight 这个节点。
谁知一高兴新建了个项目,发现什么控件都添加不了,即使在 XAML 里面写对象也不会呈现在上面的视图里(但是可以调节左上角的滑块缩放)。
之后想了想,安装了 Blend 2,而且升级到 sp1(Blend 2 和 Blend 2.5 有什么区别呢?),不用说,还是一样没反应。
后来我索性直接用 Blend 2 来做项目,每次编辑 C# 代码都会用到 VS,但是 VS 没有列出任何的成员,此时 VS 的功能就跟记事本没两样。
之后我又想,干脆用 VS 打开我用 Blend 做的 sln 吧。结果成功地就打开了,然后双击 Page.xaml,界面显示我之前画的一个路径。这下我又高兴了,谁知道这个路径用鼠标按或是拖都没反应,而且照样没法从工具栏往里面放控件。
难道我的命就那么苦吗…… Orz
难道说,只能拖放到代码里……我白问了一个问题,突然才发现可以拖放到 XAML。现在的问题就是,Blend 中的 cs 代码,为何在 VS 里面没有任何提示?
#177楼[
楼主]2008-12-08 10:31 |
@Z-Suker
现在不是Beta 2,已经RTW了:(
#178楼[
楼主]2008-12-08 10:32 |
@Piggy
这个问题跟Silverlight没关系,建议你先看一下C#基础知识,this是干嘛的。
#179楼[
楼主]2008-12-08 10:33 |
@吃葡萄并吃葡萄皮
在VS中不支持可视化的设计,等到Silverlight 3也许就可以了,只能使用Blend先设计界面,然后再用VS编写代码。
#181楼[
楼主]2008-12-23 16:49 |
@漠北的天空
上面都是Beta 1的,现在已经到了RTW了,上面那些链接都已经移除了。
从哪儿下载东西不知道,好像有点说不过去,呵呵,google一下Silverlight 2保证能够找到:)
TerryLee,真的很不错,一直都跟你学习。
我关于sliverligt有个问题呀,TerryLee.SyndicationFeedReaderTestPage.aspx与Page.xaml是怎样关联的呀,我可不可以在 WEB项目里存在多个.aspx同时对应一个sliverlight项目里的多个.xaml文件,可以又怎样对应呀?
#183楼[
楼主]2008-12-24 11:17 |
再打开TerryLee.SilverlightDemo2TestPage.aspx文件,在页面的顶部引入了System.Web.Silverlight程序集,支持<asp:Silverlight/>控件:
<%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls"
TagPrefix="asp" %><asp:Silverlight/>控件的声明如下,其中属性Source属性指定了刚才编译生成的.xap文件的路径:
<asp:Silverlight ID="Xaml1" runat="server"
Source="~/ClientBin/TerryLee.SilverlightDemo2.xap"
Version="2.0" Width="100%" Height="100%" />
请问这个部分的代码是放在哪里啊 那个TerryLee.SilverlightDemo2TestPage.aspx 打开是一些数字表示的东西 那个代码怎么加?谢谢
#185楼[
楼主]2009-01-04 11:17 |
@market_market
这就是一个普通的ASP.NET服务器控件,跟你使用Button等服务器控件效果完全是一样的,相信你应该知道加到哪里了吧?
@+Trevio
那个地址是错的哦,我也是同样的问题。
另外请教Terry及格问题:
1 我现在装的是expression blend2, 不能开发silverlight2.0,要想开发2.0怎么在blend2基础上升级到2.5 或者其他能够开发silverlight2.0的方法, 谢谢。
2 怎么在blend或XAML代码里把一张背景图片作为页面或者某个元素的背景,想html那样。
3 怎么应用或导入你写好看的控件,像你博客里写了几套靠看的风格。
问题有点多。谢谢terry及其他各位博友。
--引用--------------------------------------------------
TerryLee: @ShowJay<br>呵呵,还可以吧
--------------------------------------------------------
不错
博主你好:
我刚刚开始学习silverlight,你的文章对我帮助很大。今天准备实践一下,可是安装VS2008后安装的silverlight3.0,打开VS2008新建项目的时候VSC#下面没有silverlight的条目,不能新建silverlight项目,请教这是这么回事,如何解决?
李大哥 为什么我装了之后 出来的是SilverlightProject而不是Silverlightapplication
有个问题,Sliverlight的Xaml可以用CSS去解释吗?
把表现层的东西放在那些tag里是不是偏离了W3C的Web标准呢?
非常感谢LZ提供学习的资料,但是在学习的过程中遇到了这样一个怪事
http://p0.images22.51img1.com/6000/hyj19880107/0f8865bb7ee8ac4cb5b0dd2b3fdd32f8.png
http://pb.images22.51img1.com/6000/hyj19880107/b0464717af455131bcfda181d076bb0c.png
安装了SilverLight 2.0后新建项目时没在C#中看到silverlight选项...
望这条108层的留言楼主能看到...
老师好。公司给我分派个学习并用Siverlight 开发桌面程序UI界面,可以我以前没有接触过siverlight.这几天查资料看大家好像对开发工具的版本都说得不太一样的,我装了VS_SilverlightTools_Alpha_Setup.exe 之后我的VS2008的Project 里是可以新建siverlight的程序了,但是你例子里讲到的几个文件我这边都没有的。可能是我版本没有安装对。
您能不能把开发siverlight 用到的开发工具以及它们的版本号告诉我啊?如果可以的话我希望您能够发到我的邮箱,因为你博客的留言太多了我怕看不到。谢谢!
我的xaml文件没有高亮,也没有智能提示,是什么问题啊,怎么解决?谢谢
我的xaml文件没有高亮,也没有智能提示,是什么问题啊,怎么解决?谢谢
同问啊