在前一篇文章, 我们已经搭建好了silverlight3.0的开发环境, 现在是时候创建一个经典的“Hello World”项目,让我们来看下Silverlight 模板给我们生成了哪些东西?
我们使用Visual Studio 2008的“New Project” 向导来创建silverlight工程, 默认选择C#和.Net Framework 3.5。如图所示, 你会看到3种类型的silvelight项目,
在这里, 我们选择Silverlight Application 。
在点击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程序。
工程结构
如果我们一切使用默认选项, 生成的解决方案就会如下图所示:
在这里, 我们主要关注SilverlightApplication1里的东西,将其各项展开,如下图:
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.xaml的Uri对象做为参数。
MainPage.xaml,在Silverlight中,做为默认的启动页面,我们可以把想显示的任意内容放在这里,如果我们想改变启动页面,可以修改App.RootVisual的值。
MainPage类继承自System.Windows.Controls.UserControl,
像App类一样, MainPage类同样也有一个InitializeComponent方法,右键点击“InitializeComponent()
” , 选择“Go To Definition”, 我们就能在Page.g.cs中看到另外部份的MainPage类,
在MainPage.xaml中, 默认包含一个Grid元素,命名为“LayoutRoot”,通过FindName方法,MainPage找到这个Grid对象并赋给LayoutRoot属性。
待解决问题:
1 System.Windows.Application.LoadComponent 主要作用?
2 LayoutRoot属性作用?