您的位置:首页 > 其它

SilverLight3.0 系列之二, 创建新项目

2011-02-12 20:53 330 查看
在前一篇文章, 我们已经搭建好了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 。





在点击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_[b]UnhandledException[/b]绑定
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




像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属性作用?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: