在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
文件中进行绑定):
下面就是相应的pathon代码(app.py):
看来代码果然比我们所使用的C#简单很多,代码更少了将近一半。
下载就运行Chiron.exe来打包运行xap文件,在CMD命令行运行下面命令行:
c:/py>"C:/Program Files/Microsoft SDKs/Silverlight/v2.0/Tools/Chiron/Chiron.exe" /w
而其运行结果如下:
好了,今天代码就到这里了。
源码下载,请点击这里:)
没找到什么特别简单易用的插件在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 >
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()
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
而其运行结果如下:
好了,今天代码就到这里了。
源码下载,请点击这里:)