用 Visual Studio来创建 Silverlight Project 点击 Visual Studio Code Name "Orcas" Beta 1. 左上的 file 菜单, 点击 New Project. 在 New Project 对话框中, 请你自己选择 Visual C# 作为 C# project, 或 Visual Basic 作为 Visual Basic project, 然后选择 Silverlight. 在 模板 列表中, 选择 Silverlight Project. 为你的程序命名. 点击 OK. 你可以在此为你的project做一些额外设置, 像一些配置文件, 文件 名, 和一些组件的路径等等. 由模板创建的这个project包含了基于Silverlight托管代码程序的一些最基本的文件: 最初的HTML 文件, JavaScript 文件, XAML 文件, 和最初的 source code 文件 (.cs or .vb) . 各种Silverlight project的基本设置也已经完成了, 比如Silverlight的特定版本信息和程序集信息等等. 当然, 当前的project已经提供了基本的 debugging了.
添加额外的页面 想要添加额外的XAML 页面到当前的Silverlight project中, 点 Add, New Item, 选择 Silverlight Page. 这个 page 是由item 模板生成, 会自动创建 XAML 页和 code 文件,这都是和它的 x:Class值相关的. 是否添加额外的 HTML pages和JS scripts 取决于你的导航 模型. 一般, 你只需要维护单个 HTML 页 和一些已经存在的 control, 这些过程你要么使用托管代码(当然你也可以不用)来改变这个掌控Silverlight 内容的XAML文件, 你的目的都是进行页面的导航. 当然你也可以在HTML这个级别上来进行导航, 这样你就可能会要添加更多的页到你的project里来了.
编译已经存在的Silverlight 示例项目
一般的,你可以轻易的拷贝SL的一些现成的示例. 无非就是一些 HTML, JavaScript, 和 XAML 文件, 这些文件都是明文的容易得到的.
对于使用托管代码的应用程序, 这就有些不一样了. 一般这样的项目是不会包含后台文件像.CS和.VB的文件的, 而是用编译好的程序集来代替. 现在我们给出的一些示例 Silverlight samples 是特意为了方便大家学习而附上的, 大家可以在根目录或是某个子目录下发现它. 这些示例并是所有都有方便进行编译而存在的 project或 solution 文件. 但是你却可以使用基于模板产生的简单项目,而再向其中添加这些你需要的文件.在你编译完你现在项目时,看看你引入的那个文件中的 x:Class是否能在当然项目中使用了呢.
对于基本的 HTML, XAML, 和 JavaScript 文件, copying from an existing project or following the basic project steps are your best alternatives. Building each 文件 in a text editor is not documented in 这个 topic.
Generated Code
使用 Visual Studio 模板 来创建Silverlight托管代码 projects 值得注意的是: 编译过程, 和模板生成的托管代码的.CS或.VB文件都是为了支持你的XAML文件的. 托管代码的文件中的所以对象都是和你的XAML中 x:Name 定义的对象是引用关系. 这样,你在后台文件中就可以操作前台文件了, 调用各种方法, 或为对象添加自己的 event handlers都会在 XAML前台文件中得到映射.打个比方,一个 Visual Basic project, 模板生成的文件中包含了 WithEvents 关键字 来命名 XAML文件中的某一个对象, 那么你就可以直接引用到这个对象,你就可以创建自己的 Handles 来处理这个事件.
如果你注意注意到了XAML 文件 和模板生成的后台code 文件 , 你可能会注意到这些: 根XAML 元素 已经预定义了一个 Page_Loaded handler来处理Loaded 事件. 让人感觉这就像是 x:Class 的一个托管代码的 partial class. 这个 partial class 定义 了开始提到的 Page_Loaded 事件 handler, 但是这两个东东在哪关联上呢,应该是有一个 InitializeComponent(). 但是 InitializeComponent在哪呢? InitializeComponent 在生成的文件中已经定义了. 以上的三点我们了解到模板生成的代码不仅与你的代码将一起工作,它还要提供一些必要的object 引用. 你可以在编译后去查看你的obj 目录. 每个 XAML 页都包含 x:Name 项,这也是生成的.CS或.VB文件中会自动添加的.
部署小窍门
Silverlight.js 这个文件 应该放在服务器上一个通用的目录下, 对于WEB服务器,这可以为多个程序提供引用. 这样,可以为缓存和多线程带来便利. 你也许会发现在我们的sample中却并没有按这种方法. 相反, 每个 QuickStart 或 sample 都有一个独立的 Silverlight.js 和主 HTML 页面在一个目录里. 这个 便我们的Sample更具独立性,而不用依赖某个机器的特定目录结构.