首先打开VS2008,创建一个新的project,“File->New->Project...”。如果已经安装了SilverLight的VS插件,就能找到SilverLight的project模板啦
Silverlight application是一个空的模板,而Silverlight Navigation Application是一个包含了基本的框架的模板。为了避免从0开始呀,直接选第二个,然后OK。VS会弹出一个对话框问你是不是要创建一个测试用的web site,默认然后继续OK。
创建project完毕之后,看看project的结构吧。
我们看到VS实际上是创建了个Silverlight的app project和一个测试Silverlight app的web site。这个website的作用就是便于我们观察silverlight app在浏览器中的实际效果。F5.。。。看效果。
基本上一行代码不用写一个Silverlight程序就OK啦。不过算了,做人不能这么懒啊,稍微分析下。。
1. Ctrol + Shift + B编译以后,看到website的ClientBin目录下面多了一个SilverlightApplication1.xap。这个xap文件就是我们在浏览器中看到的silverlight程序。和flash的swf一样,它也是通过<object>这个标签放置到html中的。。
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/SilverlightApplication1.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object>
2. 另外,xap其实是一个zip文件,我们可以修改xap的后缀名为.zip,然后打开这个zip文件。可以看到它其实是由一个xml的manifest文件和一组silverlight使用到的dll文件组成的。
3. 稍微想下silverlight的运行过程吧。当客户端发一个request到包含silverlight程序的页面,这个.xap也就被download到客户端本地,然后在silverlight runtime中运行。这就要求客户浏览器必须安装silverlight插件。这其实和看flash必须要安装flash player一样的道理。至于那种方式比较nb点,我也说不上来,以后慢慢体会吧。
好啦,下面还是添加点代码吧,弄一个hello world。
1. 打开views/home.xaml,添加一个button。
<Button Content="Click me" x:Name="MyButton" FontSize="18" Width="150" Height="45" Click="MyButton_Click"></Button>
2. 右键MyButton_Click,跳转到button的click事件处理函数
private void MyButton_Click(object sender, RoutedEventArgs e)
{
HeaderText.Text = "Hello World!";
}
3. F5.。。。看效果
看到了哦!FireFox也支持的哦!
再谈谈对silverlight编程的一些感受吧
1. navigation模板感觉像提供了一个类似masterpage一样的东西
2. 除了语法,写一个xaml和写一个aspx感觉很相似呀。。。控件,markup,事件。。。
3. Style也是写在xaml文件中,感觉语法有些臃肿,不若css那么好
好啦,先写这么多吧,以后会记录更多关于silverlight开发的想法,经历和心得的。