随笔 - 196  文章 - 43  评论 - 4287 
     在silverlight 中是支持IronRUBY,IronPython,Managed JScript开发的,只可惜目前我还
没找到什么特别简单易用的插件在VS上能够直接进行开发的,所以在写本文这个DEMO时,我又打
开了“记事本”,开始写IronPython代码。

      从Silverlight SDK中有相应的开发文章和代码,虽然我本身通过它所提供的代码进行编译并运
行成功。但我总想着在里面多写一些代码,以便了解一下
IronPython。但这一写才发现了一些问题,
其中包括:

    1. 输入框不支持中文(但可以粘帖中文, 但代码中写入中文显示时会出现乱码)
    2. 对有事件绑定的控件如果在XAML中声明会报错
    3. 注释如果是相应事件中唯一的代码时会报错
   
    后来在网上去找解决方案,发现【孟子E章】在这篇文篇:
   
    Silverlight 2学习教程(四):Chiron.exe:Silverlight 2打包和动态语言部署工具 
   
    也提到了相似的问题,看来不是我一个人的问题了。好在我找到了加入Button的方式。
   
    好了,下面就是相应的XAML代码(app.xaml,注意里面的控件不要绑定事件,事件会在py
文件中进行绑定):
   
<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" Width="400" Height="300">
    
<Grid x:Name="LayoutRoot" Background="White">
      
<Canvas Canvas.Top="20">
          
<TextBlock Canvas.Top="10" Canvas.Left="20">please input you name</TextBlock>
          
<TextBox x:Name="UserInput" Width="200" Height="30" Canvas.Top="40" Canvas.Left="20">
          </
TextBox>
          
<TextBlock x:Name="Msg" Canvas.Top="90" Canvas.Left="20" Foreground="Navy" FontSize="48" >
          </
TextBlock>
          
<Button x:Name="MsgButton" Canvas.Top="130" Canvas.Left="20" Content="Hello"></Button>
      
</Canvas>
    
</Grid>
</UserControl>

   
    下面就是相应的pathon代码(app.py):
   
#名空间引用
from System.Windows import Application
from System.Windows.Controls import *
from System.Windows.Browser import *

#类外部事件声明
def handler1(sender, eventArgs):
    sender.Opacity 
/= 2

class App:
    
def __init__(self):
        self.scene 
= Application.Current.LoadRootVisual(UserControl(), "app.xaml")

    
def start(self):
        
# TODO: replace this with your application start logic
        self.scene.UserInput.Text = "please input your name."
        
#在此进行类外部事件绑定
        self.scene.UserInput.MouseLeftButtonUp += handler1
        
#在此进行类内部事件绑定
        self.scene.UserInput.MouseLeftButtonUp += self.handler2
        
#在此进行Button事件绑定
        self.scene.MsgButton.Click += self.MsgButton_Click
       
    
#类内部事件声明
    def handler2(self, sender, eventArgs):
        sender.FontSize 
= sender.FontSize #此处如果注释代码会报错,让我很晕

   
    
def MsgButton_Click(self, sender, eventArgs):
        HtmlPage.Window.Alert(
"hello, " + self.scene.UserInput.Text + "!"#显示输入信息

App().start()

      看来代码果然比我们所使用的C#简单很多,代码更少了将近一半。
   
      下载就运行Chiron.exe来打包运行xap文件,在CMD命令行运行下面命令行:
   
      c:\py>"C:\Program Files\Microsoft SDKs\Silverlight\v2.0\Tools\Chiron\Chiron.exe" /w


     
   
    而其运行结果如下:

   

   
    好了,今天代码就到这里了。
   
    源码下载,请点击这里:)
posted on 2008-07-16 17:56 代震军 阅读(1988) 评论(15)  编辑 收藏 网摘 所属分类: silverlightIron Python

  回复  引用  查看    
2008-07-16 18:13 | 木野狐(Neil Chen)      
关注一下.
  回复  引用  查看    
2008-07-16 18:21 | 代震军      
@木野狐(Neil Chen)
:)

  回复  引用  查看    
2008-07-16 19:18 | ocean      
楼主的学习精神很值得佩服啊,Silverlight支持IronPython主要是为了方便原来就用IronPython做开发的程序员。如果以前没学过,也没必要用这么一个语言来开发,要是乐意用脚本,不如直接用JavaScript。
  回复  引用  查看    
2008-07-16 20:15 | 装配脑袋      
IronPython是动态语言,而且在SilverLight中是建立在DLR上的新型架构动态语言,有很多优势。应该为了优势而学习,而不是学了C#无视其他
  回复  引用  查看    
2008-07-16 22:34 | xjb      
我觉得未来IronPython (python)很有前途,不知道代同学尝试过google app没有 ,整个IRONPython 可以应用到google app 里面么?
  回复  引用  查看    
2008-07-16 23:35 | ocean      
google app 是支持Python的一个子集。
  回复  引用  查看    
2008-07-17 08:55 | 代震军      
@ocean
@装配脑袋
其实我也是好奇所致,才开始接触的,属于新手上路,正在磨合:)
不过接触后才发现iron pathon对于Events ,Delegates,Windows Forms
开发方面都有很多值得学习和参考的地方,当然它的代码量也非常的少,少得让人有些感到不可思异,相信随着学习的深入,会有更多的发现:)

  回复  引用  查看    
2008-07-17 09:16 | hxm      
跟rubyruby
  回复  引用  查看    
2008-07-17 19:00 | Colin Han      
CodePlex上有一个IronPython Studio的项目,可以用来进行简单的IronPython开发,有简单的智能感知功能。并且有WinForm的支持。但是,我不清楚最新的版本有没有WPF和Silverlight的支持。
  回复  引用  查看    
2008-07-18 09:12 | 代震军      
@Colin Han
它对Silverlight是可以打包运行的,我最近想写个翻译文章,专门介绍一下IronPython 下的Tutorial.htm文档,原文链接我已转帖到下面地址:
http://www.cnblogs.com/daizhj/articles/1245093.html" target="_new">http://www.cnblogs.com/daizhj/articles/1245093.html

  回复  引用  查看    
2008-07-18 09:33 | Colin Han      
非常期待啊!
我也正准备写一个系列的文章,讨论怎样将IronPython等动态语言嵌入到.NET程序中运行。

  回复  引用  查看    
2008-07-18 09:35 | 代震军      
@Colin Han
过奖了,相信我们都希望pathon这个好东西能够在园子里扎下根来,呵呵:)

  回复  引用  查看    
2008-08-01 09:05 | 木野狐(Neil Chen)      
sender.FontSize = sender.FontSize #此处如果注释代码会报错,让我很晕

=====
这句话你改成 pass 就好了吧?

  回复  引用  查看    
2008-08-01 09:05 | 木野狐(Neil Chen)      
我试了没有问题的.
  回复  引用  查看    
2008-08-01 09:24 | 代震军      
@木野狐(Neil Chen)
好的,我回头看一下,谢谢:)

发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1244420




相关文章:

相关链接: