• Silverlight 5(C#)初探


    接了个单子,非要用Silverlight 5来作一个项目,之前从来没接触过这东西,为了工作。硬着头皮也要上了。摸索了一晚上,大至整理出一些项目中须要的东西,下面作为初探记录:

    Silverlight 5与Javascript的交谈方式

    Silverlight 5属于client的东西,client的东西与server端交流,第一时间想到了基于javascript的ajax这个万能胶。所以先从Silverlight 5与Javascript交互方式入手。

    一、Silverlight 5发言,Javascript倾听

    从Silverlight 5里向Javascript发送程序执行请求。

    Silverlight 5端代码详细例如以下:

    HtmlPage.Window.Invoke("Javascript函数方式", "传值-Oyiboy");

    通过以上代码能够直接在Silverlight 5里执行Javascript的脚本代码,并发送必要的数据出来。

    二、Javascript发言。Silverlight 5倾听

    Javascript使用ajax获取server端数据后发送给Silverlight 5,以达到Silverlight 5与server端的交互效果。

    Silverlight 5端代码详细例如以下:

            //设置值
            [ScriptableMember()]//这行是关键。必须有这个javascript才干请求到这种方法
            public void setVal(string D)
            {
                this.textView.Text = D;
            }
            //javascript主动要求返回值
            [ScriptableMember()]
            public string returnVal()
            {
                return this.textView.Text;
            }
    Html代码调整:
    须要在Silverlight 5插件的object代码内里加入下面參数设置句。以达到插件在载入后获取siliverlight对象。

    <param name="onLoad" value="siliverLoaded" />
    Javascript代码详细例如以下:
    
            //siliverlight对象
            var siliverlightObj = null;
            //上面那个HTML代码内设置的Silverlight 5 onLoad事件触发的函数
            function siliverLoaded(sender, args) {
                siliverlightObj = sender.getHost();
            }
    
            //下面代码中的.buttonSet和.buttonReu是两个带这些class的按钮。按钮就不详细写出来了
            //这个是执行Silverlight 5内的setVal方法
            $(".buttonSet").click(function () {
                siliverlightObj.Content.Main.setVal("javascript传入值-Oyiboy");
            })
            //这个是执行Silverlight 5内的returnVal方法
            $(".buttonReu").click(function () {
                alert(siliverlightObj.Content.Main.returnVal());
            });

    以上几个方式,灵活使用的活基本上就全然攻克了Silverlight 5与server端之间的交流,好吧,尽管这篇的东西的主题是Silverlight 5与Javascript。但终于目的还是Silverlight 5与server端的交互,反正ajax也不是什么新物,所以就跳过了。

    感想:通过Silverlight 5的对象siliverlightObj.Content.Main这一大窜东西来看,siliverlightObj还能作很多其它的事了,详细还要慢慢摸索了,假设以后有须要用到的话。还可能会出这个的说明文章吧,也许。

    2015-07-10补漏:
    关于siliverlightObj.Content.Main中的Main是指在Silverlight 中app.xaml的Application_Startup事件中注冊的訪问名称,详细代码例如以下:

            private void Application_Startup(object sender, StartupEventArgs e)
            {
                this.RootVisual = new MainPage();
                System.Windows.Browser.HtmlPage.RegisterScriptableObject("Main", this.RootVisual);
            }
    

    从代码中可知。假设有多个xaml页的话。仅仅要在这里注冊不同的名称就能够引用不同xaml页内声明的Javascript方法了。
    刚刚整理代码时在APP.xaml发现这句代码才想起把这个给漏了,今天补回。

  • 相关阅读:
    ansible设置串行的方法
    给k8s集群中的node节点加标签
    Prometheus断电后启动异常 Error on ingesting samples
    配置 containerd 镜像仓库完全攻略
    这款网络排查工具,堪称神器!
    k8s备份工具之velero
    CentOS 7安装megacli
    Atitit .h5文件上传 v3
    php切片处理视频大文件思路
    php切片处理视频大文件功能
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5133907.html
Copyright © 2020-2023  润新知