Silverlight 2完美征程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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应用程序的开发。