一步一步学Silverlight :在Silverlight中如何用JavaScript调用.NET代码

概述

Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章将从Silverlight 2基础知识、数据与通信、自定义控件、动画、图形图像等几个方面带您快速进入Silverlight 2开发。

Silverlight中内置了对于HTML、客户端脚本等的支持。上一篇介绍在Silverlight中调用JavaScript,本文我将介绍在Silverlight中如何用JavaScript调用.NET代码。

使用RegisterScriptableObject

在Silverlight 2中提供了如下两个类型:

ScriptableMemberAttribute:允许我们在Silverlight把成员暴露给Script。

ScriptableTypeAttribute:允许我们在Silverlight把类型暴露给Script。

同时HtmlPage提供了RegisterCreateableType和RegisterScriptableObject方法,用来注册可被脚本使用的类型或者对象实例。有了上面这些,就可以做到在JavaScript中调用Silverlight。

看一个简单的示例,在这个示例中,我们期望通过JavaScript传递两个参数给Silverlight中的方法,由该方法计算出结果后显示在Silverlight中,如图所示:

首先我们编写在Silverlight中的界面布局:

<StackPanel Background="#CDFCAE" Orientation="Horizontal"> <Border CornerRadius="10" W
idth="100" Height="40" Margin="50 10 0 0"> <TextBlock Text="结果显示:" FontSize="20" Foreground="Red"></TextBlock> </Border> <Border CornerRadius="10" Background="Green" Width="300" Height="40"> <TextBlock x:Name="result" FontSize="20" Foreground="White" Margin="20 5 0 0"></TextBlock> </Border></StackPanel>

并在加载时注册一个脚本可调用的当前页面实例:

private void UserControl_Loaded(object sender, RoutedEventArgs e){ HtmlPage.RegisterScriptableObject("Calculator", this);}

编写一个Add方法,该方法将在JavaScript中被调用,必须为public,用ScriptableMember特性暴露给脚本。

[ScriptableMember]public void Add(int x, int y){ int z = x + y; this.result.Text = String.Format("{0} + {1} = {2}", x, y, z);}

现在编写测试页中的内容,提供输入的input控件:

<div class="main"> <input id="txt1" type="text" /> <input id="txt2" type="text" /> <input id="Button1" type="button" value="确 定"/></div>

编写JavaScript调用Silverlight中的方法,获取Silverlight插件,Calculator就是我们刚才所注册的实例:

<script type="text/javascript">
function callSilverlight() { var slPlugin = $get('Xaml1'); slPlugin.content.Calculator.Add($get('txt1').value,$get('txt2').value); }</script>

在按钮单击事件中调用该方法

<input id="Button1" type="button" value="确 定" onclick="callSilverlight()" />

运行后结果:

输入两个数后显示出结果:

继续>>下一页[第1页][第2页]

时间: 2024-08-16 17:07:00

一步一步学Silverlight :在Silverlight中如何用JavaScript调用.NET代码的相关文章

学Silverlight 2系列(22):在Silverlight中用JavaScript调用.NET代码

Silverlight中内置了对于HTML.客户端脚本等的支持.上一篇介绍在 Silverlight中调用JavaScript,本文我将介绍在Silverlight中如何用 JavaScript调用.NET代码. 使用RegisterScriptableObject 在Silverlight 2中提供了如下两个类型: ScriptableMemberAttribute:允许我们在Silverlight把成员暴露给Script . ScriptableTypeAttribute:允许我们在Silv

一步一步学Silverlight 2

学Silverlight 2系列(35):升级Silverlight 2 Beta 1应用程序到Beta 2 学Silverlight 2系列(34) 学Silverlight 2系列(33):Silverlight 2应用Web Service两例 学Silverlight 2系列(32):图形图像综合实例-"功夫之王"剧照播放 学Silverlight 2系列(31):图形图像综合实例-实现水中倒影效果 学Silverlight 2系列(30):使用Transform实现更炫的效果

一步一步学Silverlight :使用样式封装控件观感

概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON.Web Service.WCF以及Sockets的支持等一系列新的特性.<一步一步学Silverlight 2系列>文章带您快速进入Silverlight 2开发. 本文为系列文章第八篇,主要介绍在Silverlight中使用Style元素封装控件观感 Silv

一步一步学Silverlight :基本控件

概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON.Web Service.WCF以及Sockets的支持等一系列新的特性.<一步一步学Silverlight 2系列>文章带您快速进入Silverlight 2开发. 本文为系列文章第二篇学习几个基本的控件. 在Silverlight 2中,提供了大量的控件,包括

一步一步学Silverlight :数据与通信之WebClient

概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON.Web Service.WCF以及Sockets的支持等一系列新的特性.<一步一步学Silverlight 2系列>文章带您快速进入Silverlight 2开发. 本文将介绍如何在Silverlight 2中使用Web Client进行通信. 简单示例 编写一

一步一步学Silverlight :使用控件模板

概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON.Web Service.WCF以及Sockets的支持等一系列新的特性.<一步一步学Silverlight 2系列>文章带您快速进入Silverlight 2开发. 本文为系列文章第九篇,主要介绍如何使用控件模板定制控件的观感.Silverlight提供了极其强

一步一步学Silverlight :数据与通信之ASMX

概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON.Web Service.WCF以及Sockets的支持等一系列新的特性.<一步一步学Silverlight 2系列>文章将从Silverlight 2基础知识.数据与通信.自定义控件.动画.图形图像等几个方面带您快速进入Silverlight 2开发. 本文将简

一步一步学Silverlight :图形图像综合实例---实现水中倒影效果

概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON.Web Service.WCF以及Sockets的支持等一系列新的特性.<一步一步学Silverlight 2系列>文章将从Silverlight 2基础知识.数据与通信.自定义控件.动画.图形图像等几个方面带您快速进入Silverlight 2开发. 本文将综

一步一步学Silverlight :与浏览器交互相关辅助方法

概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON.Web Service.WCF以及Sockets的支持等一系列新的特性.<一步一步学Silverlight 2系列>文章将从Silverlight 2基础知识.数据与通信.自定义控件.动画.图形图像等几个方面带您快速进入Silverlight 2开发. 本文是S