DVBBS ASP.NET论坛官方 注册  |   登录  |   搜索  |  帮助
DVBBS ASP.NET论坛官方  →  技术交流区  →  Silverlight交流  →  Silverlight解析JSON数据(上) —— javascript调用Silverlight中
共有 620 人关注过本帖
上一主题 | 下一主题  

Silverlight解析JSON数据(上) —— javascript调用Silverlight中

我不在线哦! SilverCool 积分:58 等级:版主 文章:70 积分:58 注册:2007年10月10日 威望:13 点   楼主 个性首页 QQ 邮箱 主页 发短信 加为好友
[2007-10-25 23:31:37|作者:驰清]
Silverlight解析JSON数据
本文分为两个部分,第一部分介绍如何通过网页中的javascript调用Silverlight中的函数,实现传递数据的方法。第二部分介绍Silverlight解析JSON数据的方法。

(1)在Page.xaml.cs中,将Page设为[Scriptable],并加入using. System.Windows.Browser;
 [Scriptable]
 public partial class Page : Canvas

(2)在Silverlight中注册可被外部javascript调用的对象。
添加Page()函数,在函数内部注册Scriptable对象
 public Page()
 {
 WebApplication.Current.RegisterScriptableObject("PipeLineControl", this);
 }
这样一来,就可以在网页中使用javaScript,通过Chiqing这个对象来调用Silverlight控件中被标为[Scriptable]的方法了。
(3) 在Silverilght中标明可以被网页中的javascript调用的函数。
在Page.cs 中添加如下代码

[Scriptable]
public void GetJSONData(string jsonString)
{
}

(4)下面就是要通过javascript来调用刚才定义的GetJSONData函数了.
打开TestPage.html.js,在CreateSilverlight函数中添加OnLoad事件,并添加事件响应函数OnLoaded。
在OnLoaded函数中添加如下代码,使得在Silverlight控件初始化完毕后,向其传递字符串数据("Hello world")。
 function createSilverlight()
 {
  Silverlight.createObjectEx({
    source: "Page.xaml",
    parentElement: document.getElementById("SilverlightControlHost"),
    id: "SilverlightControl",
    properties: {
      width: "100%",
      height: "100%",
      version: "1.1",
      enableHtmlAccess: "true"
    },
    events: {
     onLoad: OnLoaded }
  });
  
 function OnLoaded(sender,args)
 {
 var control = document.getElementById("SilverlightControl");
 control.Content.PipeLineControl.GetStringData("Hello World");
 }
 }
(5)在GetJSONData 函数中设置断点,编译后就可以发现该函数被调用了,传递来的jsonString,就是在(4)中构造的字符串数据。
此处需要注意的是,CreateSilverlight函数中的OnLoad事件是在Silverlight中Page_Loaded事件触发之后触发的。所以数据的读取不能写在Page_Loaded中。

本文的范例可从www.silverlighting.net下载
2007-10-31 0:01:55   举报   Top
1  1 | 10    1/1 页