1.2 创建基本的Silverlight应用
1.2.1 开发环境准备
在开始开发基于Silverlight 2的应用程序之前,首先需要准备开发环境,包括Silverlight 2运行时和Silverlight开发工具。
◆ Silverlight 2运行时:有针对Windows和Mac平台两种安装包,只有安装该运行时,Silverlight应用程序才能够在浏览器中进行正确的运行。
◆ Silverlight Tools for Visual Studio 2008:在Visual Studio 2008中开发Silverlight 2应用程序,必须安装该工具,并且必须安装Visual Studio 2008 SP1。
◆ Expression Blend:使用Expression Blend能够以可视化的方式方便地设计基于Silverlight 2的应用程序用户界面,如操作画布、控件等。
以上工具都可以在微软Silverlight官方社区站点http://silverlight.net/下载。
1.2.2 Silverlight项目元素
准备好上面的开发环境之后,就可以开始第一个Silverlight 2应用程序的开发。打开Visual Studio 2008,可以看到已经安装了Silverlight应用程序模板,如图1-3所示。
图1-3
图1-3中有“Silverlight Application”和“Silverlight Class Library”两个项目模板,它们之间的区别如下所示。
◆ Silverlight Application:Silverlight应用程序项目模板,使用它创建的项目编译后将直接打包为可宿主在HTML页面中的应用程序包。
◆ Silverlight Class Library:Silverlight类库项目模板,使用它创建的项目编译后为一个程序集,可以直接在其他Silverlight类库项目或Silverlight应用程序项目中使用。
输入项目名后进入下一步,将出现添加Silverlight应用程序对话框,如图1-4所示。
图1-4
在该窗口中,要求开发人员选择以何种方式宿主Silverlight应用程序。
◆ 添加新的ASP.NET Web类型的项目到解决方案中宿主Silverlight应用程序。ASP.NET Web类型的项目可以选择是ASP.NET网站、ASP.NET应用程序,如果安装了ASP.NET MVC框架,还可以选择使用ASP.NET MVC项目作为宿主。
◆ 自动创建一个测试HTML页面宿主Silverlight应用程序。
点击“确定”按钮后,将会在Visual Studio 2008中创建Silverlight项目,如图1-5所示。
图1-5
可以看到,如果选择添加新的ASP.NET Web类型的项目到解决方案中宿主Silverlight应用程序,将会在解决方案中创建一个新的ASP.NET Web类型的项目。下面对Silverlight项目中的文件做一些解释。
◆ AppManifest.xaml:生成应用程序包所需的应用程序清单文件,开发人员无须手工编辑该文件。
◆ AssemblyInfo.cs:包含嵌入到所生成的程序集中的名称和版本元数据,该文件的作用与普通的.NET应用程序相同。
◆ App.xaml:Silverlight应用程序文件,派生于Application类,在一个Silverlight应用程序项目中,必须有一个该文件,它负责指定应用程序的启动页面,以及应用程序的其他设置,当Silverlight应用程序在浏览器中运行时,由Silverlight插件负责初始化该类。
◆ Page.xaml:Silverlight用户控件,可以使用Page类来创建Silverlight应用程序的用户界面,Page类派生于UserControl。在Silverlight应用程序中可以有多个用户控件。如果须要添加新的用户控件到Silverlight应用程序项目中,可以在Visual Studio 2008“添加新项”对话框中选择“Silverlight User Control”,如图1-6所示。
图1-6
在ASP.NET Web类型的项目中,同样会添加一些文件,我们只关心其中两个文件,以Silverlight项目名+“TestPage”命名的ASPX文件和HTML文件,它们都是Silverlight应用程序的宿主文件,打开ASPX页面将会看到这样一段代码:
ASP.NET
<div style="height:100%;"> <asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/Chapter01.SimpleSilverlightApplication.xap" MinimumVersion="2.0.31005.0" Width="100%" Height="100%" /> </div>
这里使用服务器控件<asp:Silverlight/>来宿主Silverlight应用程序,Source属性指定了一个后缀为xap的文件,该文件就是Silverlight应用程序编译之后打包而成的文件。同样打开HTML页面,可以看到这样一段代码:
HTML
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="ClientBin/Chapter01.SimpleSilverlightApplication.xap"/> <param name="onerror" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="2.0.31005.0" /> <param name="autoUpgrade" value="true" /> <a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/> </a> </object>
这里使用不同的方式在HTML进行宿主Silverlight应用程序,但是指定Silverlight应用程序包文件不能缺少。如果想宿主Silverlight应用程序在其他类型的Web页面中,如PHP、JSP等,都可以使用这种方式,关于Silverlight宿主将在本书第19章详细介绍。
如果在创建Silverlight项目过程中选择了“自动创建一个测试HTML页面宿主Silverlight应用程序”一项,则在解决方案中只有一个Silverlight应用程序项目,不会添加ASP.NET Web类型的项目作为测试项目,如图1-7所示。
图1-7
当编译Silverlight项目时,可以看到在Debug文件夹下创建了一个名为“TestPage.html”的HTML页面,可以使用它来作为Silverlight应用程序的测试页面,如图1-8所示。
图1-8
1.2.3 简单示例
使用1.2.2节中所介绍的方法创建一个Silverlight应用程序项目,打开Page.xaml文件,替换为如下示例代码:
XAML
<UserControl x:Class="Chapter01.SimpleSilverlightApplication.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="500" Height="240" FontSize="18"> <Grid x:Name="LayoutRoot" Background="White"> <Button x:Name="myButton" Width="300" Height="80" Content="Button"/> </Grid> </UserControl>
这段代码非常简单,仅仅是在页面上显示一个Button控件。直接按下“F5”运行,可以看到效果如图1-9所示。
图1-9
下面再为该Button控件注册单击事件,可以直接在XAML中注册,Visual Studio会有智能提示,如图1-10所示。
图1-10
编写Button控件单击事件的实现,改变Button的文字信息,示例代码如下所示:
C#
void myButton_Click(object sender, RoutedEventArgs e) { this.myButton.Content = "Hello Silverlight"; }
再次运行应用程序后单击Button控件,效果如图1-11所示。
图1-11
至此就完成了一个Silverlight应用程序的开发。