Python创建Silverlight控件编写过程经验分享

开发 后端
Python创建Silverlight控件的实现过程是一个比较简单的操作,我们在这里通过一个比较简单的示例来为大家详细介绍一下这方面的知识。

Python编程语言可以帮助我们实现哪些功能呢?它的主要应用范围都包括哪些呢?我们今天先来了解一下有关Python创建Silverlight控件的相关实现方法,以此来初步熟悉一下这一语言的应用方式以及功能特点。#t#

其实关注Silverlight很久了,只是最初的版本令我很失望,1.0的Silverlight在我看来,就相当于强化版的VML或者SVG而已,多年以前(04年)我一直期待微软能出一个强大的web端插件,能够跟flash竞争,这么久以后,这个东西才逐渐变成现实。

好吧,Silverlight 2有了,尽管它还是beta 版,先玩玩吧。我搞了一个Visual Studio 2008 Express版,装了Web跟C#,竟然都不支持2.0的Silverlight开发,有没有搞错,就是冲着那些控件才来玩SL的,这怎么办。

这可郁闷死我了,于是我只好乖乖装完整版本的Visual Studio 2008,这玩意大得很,我把硬盘空间整理了又整理,勉强弄出一点地盘给它,N久之后终于装完,折腾了半天,那个该死的插件又装不上,搞了好久还是不行,我很生气,算了,不搞它了。

于是我决定Python创建Silverlight控件不要VS2008了,听说Silverlight 2.0支持动态语言,好,来玩玩。我以前是做JavaScript的,换个吧,我来玩玩Python,于是我就找例子,一找找到了,怎么呢,我来写了:

这里是XAML文件app.xaml

 

  1. < Canvas xmlns="http://schemas.microsoft.com/client/2007"   
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
  3. x:Class="System.Windows.Controls.Canvas" x:Name="Page" 
    Width="400" Height="300">   
  4. < TextBlock x:Name="MsgText" Canvas.Top="10" Canvas.Left="10"> 
  5. < /TextBlock>   
  6. < Button x:Name="TestButton" Canvas.Top="40" Canvas.Left="10" 
    Content="Test">< /Button>   
  7. < /Canvas> 

 

这里是Python文件app.py

 

 

  1. from System.Windows import Application   
  2. from System.Windows.Controls import *   
  3. from System.Windows.Browser import *   
  4. class App:   
  5. def __init__(self):   
  6. self.scene = Application.Current.LoadRootVisual(Canvas(), "app.xaml")   
  7. def start(self):   
  8. self.scene.TestButton.Click += self.TestButton_Click   
  9. def TestButton_Click(self, sender, eventArgs):   
  10. self.scene.MsgText.Text = "Hello, world!"   
  11. App().start() 

 

 

其他的没什么悬念了,Chiron /d,开始跑,http://localhost:2060/index.htm上出现了效果,一个文本框,一个按钮,点一下按钮,框里面出来一个hello, world!

 

于是我就很激动,原来是这么好玩的啊,貌似Python创建Silverlight控件写起来也很简单的哇,那我来搞两个复杂一点的控件。什么控件比较帅呢,我一想,日历吧,这个东西好,那我就开始了,我加了一行

 

  1. < Calendar x:Name="TestCalendar" Canvas.Top="10" Canvas.Left="10"/> 

好了,开始跑,咦,不对,说找不到Calendar这个东西,研究了一下文档,发现这个是包含在System.Windows.Controls.Extended.dll里面,于是我把这个dll拷到app目录下,还是不行,怪啊,这要怎么办呢,到处找了一遍,发现竟然没有有关Python调用SL扩展控件的文章,这可痛苦了。

但是我不甘心,我相信微软不会这么不友好,于是我继续查帮助,咦,Calendar前面要加一个前缀做命名空间,但是XAML头上怎么定义呢,我想了想,实在想不出来,然后我很猥琐地想到了Blend,嘿嘿,我下载了一个,安装,创建项目,然后创建控件,这个时候只有内部控件可以用,然后我在项目上添加引用到SDK目录下的System.Windows.Controls.Extended.dll,于是就可以创建日历了。

我要的可不是这个哦,切换到XAML栏,看到没有,这行代码:

xmlns:System_Windows_Controls_Extended="clr-namespace:System.Windows.Controls; assembly=System.Windows.Controls.Extended",原来就是它在起作用呵,于是我照样定义了一遍,仍然不行。。。

这是怎么回事?继续发奋研究文档,终于发现,在Python文件里面也要写东西的,我贴Python创建Silverlight控件的完整代码了哦,app.py

 

 

  1. import clr   
  2. clr.AddReference("System.Windows.Controls.Extended")   
  3. from System.Windows import Application   
  4. from System.Windows.Controls import *   
  5. from System.Windows.Browser import *   
  6. class App:   
  7. def __init__(self):   
  8. self.scene = Application.Current.LoadRootVisual(Canvas(), "app.xaml")   
  9. def start(self):   
  10. # TODO: replace this with your application start logic   
  11. self.scene.TestButton.Click += self.TestButton_Click   
  12. def TestButton_Click(self, sender, eventArgs):   
  13. HtmlPage.Window.Alert(self.scene.TestCalendar.SelectedDate.ToString())   
  14. App().start() 

 

 

呵呵,看到没有,最开始那两句,它是起作用的关键。下面是app.xaml

 

  1. < Canvas xmlns="http://schemas.microsoft.com/client/2007"   
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:System_Windows_Controls_Extended="clr-namespace:
    System.Windows.Controls;assembly=System.Windows.Controls.Extended"
       
  3. x:Class="System.Windows.Controls.Canvas" x:Name="Page" 
    Width="400" Height="300">   
  4. < System_Windows_Controls_Extended:Calendar 
    x:Name="TestCalendar" Canvas.Top="10" Canvas.Left="10"/>   
  5. < Button x:Name="TestButton" Canvas.Top="180" 
    Canvas.Left="10" Content="Test">< /Button>   
  6. < /Canvas> 

以上就是我们对Python创建Silverlight控件的相关介绍。

责任编辑:曹凯 来源: 博客园
相关推荐

2009-12-31 10:15:12

Silverlight

2009-12-29 15:38:17

silverlight

2009-12-30 13:37:24

Silverlight

2010-03-09 10:49:35

python简单应用

2010-04-27 17:21:39

Oracle存储过程

2010-04-15 16:06:02

Oracle存储过程

2011-06-24 14:10:50

SEO

2011-04-07 13:18:00

管理软件项目项目

2009-12-30 13:30:16

Silverlight

2015-05-07 14:45:40

Cocos 插件

2009-12-30 18:23:13

Silverlight

2009-12-29 17:56:47

Silverlight

2009-12-30 15:20:39

Silverlight

2010-01-04 14:49:30

Silverlight

2009-12-30 13:51:43

Silverlight

2015-07-08 10:01:55

JavaURL重写过程实录

2020-04-25 20:18:04

C语言编程汇编语言

2009-12-31 10:21:53

Silverlight

2009-12-31 17:00:40

Silverlight

2010-01-04 14:35:55

Silverlight
点赞
收藏

51CTO技术栈公众号