zoukankan      html  css  js  c++  java
  • 在silverlight 使用 IronPython

         在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


         
       
        而其运行结果如下:

       

       
        好了,今天代码就到这里了。
       
        源码下载,请点击这里:)
  • 相关阅读:
    iOS6 与iOS7以及7以上状态栏的颜色设置
    XCode常用快捷键的使用
    [Cordova+Sencha Touch] 移动开发1 sencha 2.4.0 + 在 安卓2.3.6上使用报错
    document.addEventListener的使用介绍
    设置aspx页面的地址栏中的Session ID的显示与隐藏
    Android检测网络是否可用并获取网络类型
    程序员必读书籍及导读指南
    ListView的属性及方法详解
    javascript
    CSS
  • 原文地址:https://www.cnblogs.com/daizhj/p/1244420.html
Copyright © 2011-2022 走看看