Silverlight与Javascript交互操作

文/代震军  出处/博客园

  在silverlight开发中,我们可以使用js来调用silverlight中的方法(当然方法上要捆绑相应属性),也可以将指定
的js方法绑定到silverlight应用中的事件上.本DEMO演示了通过js调用完成silverlight数据列表控件(DataGrid)的数
据绑定操作,并通过DataGrid的EmployeeList_BeginningCellEdit事件将当前选取的数据行信息返回到js所绑定的
事件参数上,并调用该js方法显示选中数据行信息,如下图所示:

 附件: 您所在的用户组无法下载或查看附件
           
 
    下面介绍一下主要的开发过程:)
 
    首先,我们需要建立一个Silverlight Application ,名称为:Silverlight_JS_call.
 
    然后我们要在当前的项目中加入一个类文件,名称为:EmployeeInfo.cs.
 
    下面是相应的代码,相关内容见注释:

Code


上面代码中要注意的是[ScriptableType]和[ScriptableMember],前者允许Silverlight把类型暴露给脚本,后者
则会把成员方法或属性暴露给脚本.

  而下面的代码就是page.xaml中的内容:

Code


下面则是相应的page.xaml.cs文件的内容(相关内容见注释):

Code


上面代码要注意的是RegisterScriptableObject方法的调用,它用来注册可被脚本使用的对象实例,
与它相对应的还有一个方法RegisterCreateableType,它用于注册可被脚本使用的类型.

  到这里,基本上完成的cs代码的开发工作.下面则是相应的js调用以及事件绑定代码了,请看:

Code


另外在进行初始化操作,这里使用了onclick方法来执行操作,而不是直接运行相应代码.原因是
silverlight对象加载是使用了异步方式,这样会造成对象实例化完成时间迟于页面JS脚本的运行时间.
这样设计的原因,我个人认为主要是UE方面的考虑.而这时如果脚本中直接调用对象实例化的属性或
方法时,会出现对象未知的情况.
     
    好了,今天的内容就到这里了.
   
    源码下载链接,请点击这里:
 附件: 您所在的用户组无法下载或查看附件

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Silverlight] 的这些文章也感兴趣:

走近Silverlight
Silverlight教程第三部分:使用 Networking取回数据并填充DataGrid
一步一步学Silverlight 2系列(32):图形图像综合实例—“功夫之王”剧照播放
一步一步学Silverlight 2系列(16):数据与通信之JSON
Silverlight vs Flash的技术比较
基于Silverlight的精简框架之应用
使用SilverLight构建插件式应用程序(三)
Silverlight 2的变化(Breaking Changes in Silverlight 2)
Silverlight 2 (beta1)数据操作(6)
Silverlight Toolkit预览Part 1:介绍