用Silverlight(C#)调用JavaScript中的方法
——Silverlight与JavaScript交互第三篇
第一篇:Silverlight中C#获取与修改HTML DOM元素信息
第二篇:用JavaScript调用Silverlight(C#)中的方法
==================================
前面一篇讲了用JavaScript调用Silverlight(C#)方法的方式,这一篇讲讲怎样用Silverlight来调用JavaScript方法。
[Scriptable]标记真是非常的好,可以允许JavaScript访问Silverlight中的方法,还可以允许Silverlight来调用JavaScript方法。
和JavaScript调用C#方法一样,首先要为Page类注册一个实例名称,如下:
[Scriptable]
public partial class Page : Canvas
{
public Page()
{
WebApplication.Current.RegisterScriptableObject(“OoboyNet”, this);
}
….
}
假设我们在XAML中有这样一个矩形或者文本框或者按钮等等(看你自己的选择咯!),并假设它的x:Name为btnRect,那么我们首先在Page_Loaded方法中为其注册一个事件:
btnRect.MouseLeftButtonDown += new MouseEventHandler(btnRect_MouseLeftButtonDown);
然后我们再在C#中声明一个EventHandler,也用[Scriptable]标记一下,如下:
[Scriptable]
public event EventHandler CallJS;
我们再来写刚才为按钮btnRect注册的事件控制函数,代码如下:
void btnRect_MouseLeftButtonDown(object sender, MouseEventArgs e)
{
if (CallJS != null)
{
CallJS(this, EventArgs.Empty);
}
}
好C#中的工作做完了,下面就要写JavaScript了。在JavaScript中,首先要在createSivlerlight方法的events中注册一个onLoad事件,代码如下:
events: {
onLoad : OnLoaded
}
我们再为这个事件写一个控制函数,代码如下:
function OnLoaded(sender, args){
//我们刚才在C#里注册的实例OoboyNet
//C#里注册的事件CallJS,现在把这个事件的控制函数指定为JS方法
sender.Content.OoboyNet.CallJS = JSFunction;
}
好吧,剩下的就是最后指定的那个JS方法了:
function JSFunction(sender, args){
alert(“This is from JavaScript”);
}
OK,Silverlight与JavaScript、HTML DOM的交互三篇到这里就结束了。
红红博客的网址已变为http://www.diqici.com/redblog 麻烦你改下链接地址,谢谢!
已更改^_^