none
在Silverlight 2 beta1中使用IronPython等动态语言 RRS feed

  • 常规讨论

  • 目前在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%22
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml%22>

        <TextBlock x:Name="message" FontSize="30"/>

    </Canvas>""")

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

    • 在app目录中创建一个xaml代码文件:app.xaml(在我的例子中,可以不要这个文件,但是如果使用LoadRootVisual方法的话,就需要),代码如下:

    <Canvas xmlns="http://schemas.microsoft.com/client/2007%22
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml%22>

        <TextBlock x:Name="message" FontSize="30"/>

    </Canvas>

    • 在根目录中,本例即IPSL2目录中,创建一个Index.html文件来作为浏览页面,body中的代码如下(解释一下,我这里为什么要用图片的原因,这是因为在Windows Live Writer中贴入一下代码后,就在其中显示一个Silverlight的控件了,真是的!):
    image
    • 现在开始使用Chrion工具来运行这个动态语言Silverlight 2应用程序了。
    • 首先,把Chrion所在的目录添加到PATH中
    • 启动命令行,进入到IPSL2目录中,运行Chrion /b来启动一个Web Server,并同时打开一个浏览器
    • 在浏览器中点index.html文件,就可以看到Silverlight over IronPython的应用程序运行了,如下图:

    image

    另外对于使用IronRuby的同学来说,可以参考John Lam的文章(注:下面我给的连接是通过Web代理访问,直接是访问不了的):

    John Lam on Software Dynamic Silverlight Part 1 Hello, World!

    John Lam on Software Dynamic Silverlight Part 2 Managed JScript and flickr

    整个示例的代码在这里下载:http://www.91files.com/?GXW6W7RN1L2N1N358LJC

    Update!
    对于app.py和app.xaml得到思归的提醒,可以使用如下代码(其实一下代码,我昨晚也尝试过,结果没有成功,简直晕死!):
    app.py:
    ============
    from System.Windows import Application
    from System.Windows.Controls import UserControl

    Application.Current.LoadRootVisual(UserControl(), 'app.xaml')

    Application.Current.RootVisual.message.Text="Welcome to Silverlight and IronPython!"
    ============
    app.xaml:
    ============
    <UserControl
       xmlns="http://schemas.microsoft.com/client/2007"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       x:Class="System.Windows.Controls.UserControl"
       x:Name="Page" >

        <TextBlock x:Name="message" FontSize="30"/>

    </UserControl>
    ============


    My blog: http://blog.csdn.net/dotfun http://dotfun.cnblogs.com

    My contact: QQ:372900288 E-mail:372900288@qq.com msn:sellnet007@hotmail.com

    2009年3月9日 8:12
    版主