对于silverlight调用JS感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解silverlight插件怎么启用,并且为您提供关于Silverlight2学习教程(六):Silverli
对于silverlight调用JS感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解silverlight插件怎么启用,并且为您提供关于Silverlight 2学习教程(六): Silverlight托管代码调用Javascript中的JSON对象、Silverlight 5 beta新特性探索系列:1.安装Silverlight 5 beta环境以及OOB模式下Silverlight 5 多窗口支持、Silverlight HttpUtil 封装Post调用、SilverLight OOB模式与Com API交换的基础 和 C#编写Com 组件在SilverLight调用的宝贵知识。
本文目录一览:
silverlight调用JS(silverlight插件怎么启用)

Silverlight 2学习教程(六): Silverlight托管代码调用Javascript中的JSON对象
在上一篇Blog文章中,讲述了JavaScript与Silverlight托管代码相互调用的一些方法。实际上,HtmlWindow的GetProperty方法和Invoke/InvokeSelf方法的返回值是Object类型的,代表 DOM对象或者JavaScript对象(HtmlDocument、HtmlElement、HtmlObject、ScriptObject)的返回值自动作为最接近的类型进行返回,但是,程序开发人员仍然需要明确地将该对象转换成相应的类型。所有的数字,由于跨浏览器的原因,都作为Double类型返回,如果需要Int32类型,则执行Convert.ToInt32()方法即可。
在现代的Web应用中,JSON的使用越来越频繁。Silverlight 2中要调用JavaScript中的JSON对象,首先在托管代码中声明一个类,类的属性与JSON对象的属性一致(不必完全一致),然后在托管代码中将ScriptObject对象转换成声明的这个类型即可。
下面是一个完整的例子:
Page.xaml:
<UserControl x:Class="SilverlightApplication1.Page"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="600" Height="480">
<Grid x:Name="LayoutRoot" Background="White">
<Canvas Canvas.Top="20">
<TextBlock Canvas.Top="10" Canvas.Left="20">请输入您的姓名: </TextBlock>
<TextBox x:Name="UserInput" Width="200" Height="30" Canvas.Top="40" Canvas.Left="20"></TextBox>
<TextBlock x:Name="Msg" Canvas.Top="90" Canvas.Left="20" Foreground="Navy" FontSize="18" Width="500"></TextBlock>
<Button Click="Button_Click" Content="单击我" FontSize="24" Width="160" Height="60" x:Name="BtnTest" Canvas.Top="160" Canvas.Left="20"></Button>
<Button Click="JSONButton_Click" Content="JavaScript JSON 对象测试" FontSize="24" Width="300" Height="50" Canvas.Top="240" Canvas.Left="20"></Button>
<TextBlock x:Name="Msg2" Canvas.Top="300" Canvas.Left="20" Foreground="Navy" FontSize="18" Width="500"></TextBlock>
<TextBlock x:Name="Msg3" Canvas.Top="320" Canvas.Left="20" Foreground="Navy" FontSize="18" Width="500"></TextBlock>
</Canvas>
</Grid>
</UserControl>
Page.xaml.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.browser;
using System.Runtime.Serialization.Json;
namespace SilverlightApplication1
{
public partial class Page : UserControl
{
public Page()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string UserInputContent = this.UserInput.Text;
if (UserInputContent.Equals(String.Empty))
{
UserInputContent = "Hello Silverlight World!";
}
else
{
UserInputContent = "你好," + UserInputContent;
}
HtmlWindow win = HtmlPage.Window;
this.Msg.Text = UserInputContent;
win.Alert("Silverlight 里面弹出的对话框。 " + UserInputContent);
//执行页面中的js函数:
win.Eval("getArraytest()");
Object[] args = { "将此参数传递给 js 函数" };
win.Invoke("getArrayTest", args);
//如果页面中的值
HtmlDocument doc = HtmlPage.Document;