专注

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在前一篇文章, 我们已经搭建好了silverlight3.0的开发环境, 现在是时候创建一个经典的“Hello World”项目,让我们来看下Silverlight 模板给我们生成了哪些东西?

我们使用Visual Studio 2008的“New Project” 向导来创建silverlight工程, 默认选择C#和.Net Framework 3.5。如图所示, 你会看到3种类型的silvelight项目,

  • Silverlight Application
  • Silverlight Class Library
  • Silverlight Navigation Application

    在这里, 我们选择Silverlight Application 。

    image

    在点击OK按钮后, 我们会看到一个对话框,在这里,我们可以选择如何安置我们的silverlight工程,因为silverlight是基于Web的技术,它必须在某个Web页面里才能运行。默认情况下,visual studio会选择“Host the Silverlight application in a new Web site”,如果你选择默认方式创建工程,在生成的解决方案里会包含2个工程,一个是silverlight, 另一个是Asp.Net。如果你选择取消的话,VS只仅仅生成一个工程,位于Bin目录下面,包含一个Test页面, 当你运行这个工程时,test.html会启动,同时在该页面上会显示你的silverlihgt程序。
    image

    工程结构

    如果我们一切使用默认选项, 生成的解决方案就会如下图所示:

    image

    在这里, 我们主要关注SilverlightApplication1里的东西,将其各项展开,如下图:

    image

    AppManifest.xml, silverlight程序清单,这个文件描述了跟项目有关的所有DLL和程序的入口,在默认生成的项目中, 刚开始的时候,这个文件是空的,但如果你build了工程,你就会发现在Bin/Debug或者Bin/Release目录下生成了一个AppManifest.xaml,打开AppManifest.xaml,其中只列了一个DLL-“SilverlightApplication1.dll”,这个DLL会被包含在.xap文件中。

    我们可以将AppManifest.xaml看做silverlight运行时的启动文件,它表明了哪些程序集应该被加载,哪个程序集提供入口方法。

    AssemblyInfo.cs, 主要用来设定生成的程序集的一些参数。

    App.xaml, App.xaml/App.xaml.cs 定义了Silverlight程序的入口, 打开App.xaml.cs, 你会看到App类, 该类继承于System.Windows.Application(位于System.Windows.dll).
    App的构建函数
    1 App.Startup事件委托与方法Application_Startup绑定
     2 App.Exit事件委托与方法Application_Exit绑定
     3 App.UnhandledException事件委托与方法Application_UnhandledException绑定
    4 调用InitializeComponent()

    Application_Startup()方法:
    1 实例化Page对象
    2 设置App.RootVisual为Page对象

    InitializeComponent()方法:
      调用Application.LoadComponent(位于App.g.cs),并传递一个指向App.xamlUri对象做为参数。

    MainPage.xaml,在Silverlight中,做为默认的启动页面,我们可以把想显示的任意内容放在这里,如果我们想改变启动页面,可以修改App.RootVisual的值。

    MainPage类继承自System.Windows.Controls.UserControl
    image

    像App类一样, MainPage类同样也有一个InitializeComponent方法,右键点击“InitializeComponent()” , 选择“Go To Definition”, 我们就能在Page.g.cs中看到另外部份的MainPage类,
    image

    在MainPage.xaml中, 默认包含一个Grid元素,命名为“LayoutRoot”,通过FindName方法,MainPage找到这个Grid对象并赋给LayoutRoot属性。

    待解决问题:

    1 System.Windows.Application.LoadComponent 主要作用?

    2 LayoutRoot属性作用?

  • posted on 2011-02-12 20:53  中金黄金  阅读(350)  评论(0编辑  收藏  举报