设为首页 收藏本站
查看: 1059|回复: 0

[经验分享] 使用Python创建Silverlight控件

[复制链接]

尚未签到

发表于 2015-4-23 10:58:39 | 显示全部楼层 |阅读模式
  其实关注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久之后终于装完,折腾了半天,那个该死的插件又装不上,搞了好久还是不行,我很生气,算了,不搞它了。
  于是我决定不要VS2008了,听说Silverlight 2.0支持动态语言,好,来玩玩。我以前是做JavaScript的,换个吧,我来玩玩Python,于是我就找例子,一找找到了,怎么呢,我来写了:
  这里是XAML文件app.xaml
       
         
         

  这里是Python文件app.py
  
  from System.Windows import Application   
from System.Windows.Controls import *     
from System.Windows.Browser import *
  class App:   
    def __init__(self):     
        self.scene = Application.Current.LoadRootVisual(Canvas(), "app.xaml")
  def start(self):   
        self.scene.TestButton.Click += self.TestButton_Click
  def TestButton_Click(self, sender, eventArgs):   
        self.scene.MsgText.Text = "Hello, world!"
  App().start()
  
  其他的没什么悬念了,Chiron /d,开始跑,http://localhost:2060/index.htm上出现了效果,一个文本框,一个按钮,点一下按钮,框里面出来一个hello, world!
DSC0000.gif
  于是我就很激动,原来是这么好玩的啊,貌似写起来也很简单的哇,那我来搞两个复杂一点的控件。什么控件比较帅呢,我一想,日历吧,这个东西好,那我就开始了,我加了一行
  
  好了,开始跑,咦,不对,说找不到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文件里面也要写东西的,我贴完整代码了哦,app.py
  
  import clr   
clr.AddReference("System.Windows.Controls.Extended")
  from System.Windows import Application   
from System.Windows.Controls import *     
from System.Windows.Browser import *
  class App:   
    def __init__(self):     
        self.scene = Application.Current.LoadRootVisual(Canvas(), "app.xaml")
  def start(self):   
        # TODO: replace this with your application start logic     
        self.scene.TestButton.Click += self.TestButton_Click
  def TestButton_Click(self, sender, eventArgs):   
        HtmlPage.Window.Alert(self.scene.TestCalendar.SelectedDate.ToString())
  App().start()
  
  呵呵,看到没有,最开始那两句,它是起作用的关键。下面是app.xaml
       
         
         

  好啦,预览一下,非常帅:
DSC0001.gif
  好了,今天的试验到这里结束啦,以后我们再来玩复杂些的。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59985-1-1.html 上篇帖子: 冲刺豆瓣(2):知其Python哲学 下篇帖子: python zeromq
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表