从 JavaScript 调用silverlight方法
先决条件
-
Silverlight 版本 4.
-
用于 Visual Studio 2010 的 Silverlight 4 Tools.
-
Microsoft Visual Studio 2010.
创建 Silverlight 项目和测试页
略
注册用于客户端脚本访问的托管代码
1、
public Page() { InitializeComponent(); HtmlPage.RegisterScriptableObject("Page", this); this.timer = new DispatcherTimer(); this.timer.Tick += new EventHandler(Timer_Tick); this.timer.Interval = TimeSpan.FromMilliseconds(400); }
2、在 script 元素中,创建 Silverlight 应用程序完成加载后将调用的 pluginLoaded 函数。
<script type="text/javascript" language="javascript"> var slcontrol = null; function pluginLoaded(sender, args) { if (sender != null && sender != 0) { slcontrol = sender.getHost(); } } function StartPare( a, b) { if (slcontrol) { slcontrol.Content.Page.StartPara(a,b); } } function ReturnPare() { if (slcontrol) { var j = slcontrol.Content.Page.StopPara(); alert(j.toString()); } } </script>
3、Silverlight 控件标记与下面的代码类似:
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="400" height="300"> <param name="source" value="ClientBin/JavaScriptToSilverlight.xap"/> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="4.0.50401.0" /> <param name="autoUpgrade" value="true" /> <param name="onload" value="pluginLoaded" /> <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration:none"> <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/> </a> </object>
使用 JavaScript 获取和设置托管代码属性值
该按钮的 HTML 标记
<input type="button" value="StartPare" onclick="StartPare(2,3);" />
<input type="button" value="ReturnPare" onclick="ReturnPare();" />
silverlight页面的代码
int j = 0; [ScriptableMember] public void StartPara(int a, int b) { j = a + b; } [ScriptableMember] public int StopPara() { return j; }