拼吾爱程序人生

首页 » .Net编程 » Silverlight » 在Silverlight 2 beta1中使用IronPython等动态语言
cobra - 2008-3-8 16:46:00
文/redmoon  出处/博客园

目前在Silverlight Tools Beta 1 for Visual Studio 2008 中包括了3个动态语言的运行库:IronPython、IronRuby和Managed JScript。

但是VS2008针对这三个动态语言的模板还没有完成,所以现在我们没有办法创建动态语言的Silverlight 2项目(甚至于VB的都不行,默认只是C#的);不过Silverlight 2 SDK提供了一个工具来帮助我们生成部署的xap文件——Chiron工具,它在目录:C:\Program Files\Microsoft SDKs\Silverlight\v2.0\Tools\Chiron里。

另外,在CodePlex上还提供了一个Dynamic Silverlight Sample的项目,来指导我们在Silverlight 2中使用动态语言,不过目前这个项目还是针对Silverlight 1.1的。

下面我就给大家演示一下(以IronPython为例):

创建一个目录,如IPSL2,在里面创建2个子目录:app(包含动态语言代码文件和XAML文件文件)和assets(包含资源文件,如图片等);在assets中在创建一个子目录js(这个目录其实可以不要,在1.1中是用于保存silverlight.js的,不过现在可以保存其他js文件)。
在app目录中创建一个IronPython代码文件:app.py,代码如下(在这里,我是使用XamlReader.Load把xaml字符串直接加载,本来我想用Application.Current.LoadRootVisual方法把app.xaml载入,但是一直没有成功,有朋友知道怎么弄吗?):
from System.Windows import Application
from System.Windows.Markup import XamlReader

Application.Current.RootVisual = XamlReader.Load("""
<Canvas xmlns="http://schemas.microsoft.com/client/2007";
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml";>

    <TextBlock x:Name="message" F/>

</Canvas>""")

Application.Current.RootVisual.message.Text="Welcome to Silverlight and IronPython!"

在app目录中创建一个xaml代码文件:app.xaml(在我的例子中,可以不要这个文件,但是如果使用LoadRootVisual方法的话,就需要),代码如下:
<Canvas xmlns="http://schemas.microsoft.com/client/2007";
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml";>

    <TextBlock x:Name="message" F/>

</Canvas>

在根目录中,本例即IPSL2目录中,创建一个Index.html文件来作为浏览页面,body中的代码如下(解释一下,我这里为什么要用图片的原因,这是因为在Windows Live Writer中贴入一下代码后,就在其中显示一个Silverlight的控件了,真是的!):

 附件: 您所在的用户组无法下载或查看附件

现在开始使用Chrion工具来运行这个动态语言Silverlight 2应用程序了。
首先,把Chrion所在的目录添加到PATH中
启动命令行,进入到IPSL2目录中,运行Chrion /b来启动一个Web Server,并同时打开一个浏览器
在浏览器中点index.html文件,就可以看到Silverlight over IronPython的应用程序运行了,如下图:

 附件: 您所在的用户组无法下载或查看附件

整个示例的代码在这里下载:
 附件: 您所在的用户组无法下载或查看附件

 您可能对 [Silverlight] 的这些文章也感兴趣:

什么是SilverLight
走近Silverlight
四个原因让Silverlight无法取代Flash
Silverlight、JavaFX、Flex/Flash技术比较
Silverlight vs Flash的技术比较
Silverlight:你需要知道的十件事情
在Silverlight中使用定时器(Timer)
Silverlight应用程序的.NET项目结构
设计silverlight的MediaPlay控件
设计一个silverlight的Button控件补完设计
.NET开发Silverlight程序:界面和对象模型
Halo 3网站显示出SilverLight的缺陷
1
查看完整版本: 在Silverlight 2 beta1中使用IronPython等动态语言
Modify by pin5i DZNT_ExpandPackage 2.1.3295 2007-2009 pin5i.com
 Total Unique Visitors: