这张网页包含两个区域,一个javascript区域和一个silverlight区域,每一个区域中都有一个小方形。当你在一个区域中移动这个小方形的时候,另一个区域的小方块也会立即更新位置。下面就来展示如何做到从silverlight到javascript区域中小方块位置的更新。
从silverlight调用Javascript
在Silverlight中的System.Windows.Browser命名空间里有一个HtmlPage对象,该对象可以允许你访问网页的DOM。所以,在javascript区域中移动小方形就只需要如下一行简单的代码:
HtmlPage.Window.Invoke("moveBox", newX, newY);
其中,"moveBox"是javascript的一个方法名字,用来更新红色小方形的位置。
从Javascript调用silverlight
这一步要稍微复杂一些。首先我们需要标记哪一个类要暴露给javascript调用,其次需要注册该类使得javascript可以调用。然后,给与那些要给javascript调用的方法赋予ScriptableMember的属性,这里方法MoveBox用来更新蓝色小方形的位置的。代码如下:
[ScriptableType]
public partial class Page : UserControl
HtmlPage.RegisterScriptableObject("silverlightMove", this);
[ScriptableMember]
public void MoveBox(int x, int y)
当上面的步骤完成后,就可以回到javascript调用silverlight了,其中"silverlightControl"是该例子中Silverlight应用的对象标记(tag)。
silverLightControl = document.getElementById("silverlightControl");
silverLightControl.content.silverlightMove.MoveBox(x, y);
这则例子的代码可以在如下网址找到:
The code for this sample can be found at here at MSDN Code Gallery.
原文:http://blogs.msdn.com