1

我创建了一个 Silverlight 应用程序,它基本上从存储在 JSON 字符串中的数据构建多层球体(想想同心圆)的横截面图像。JSON 字符串是一个直径+颜色值的数组,如下所示:

[{"diam":100,"color:"#ffffff"},{"diam":150,color:"#ff0000"}]

我的一切都在 Silverlight 中工作。当我用上面的 JSON 在浏览器中加载应用程序时,我成功得到了两个同心圆的渲染,内圆是白色的 (#ffffff),直径为 100 像素,外圆是红色 (#ff0000),带有直径为 150 像素。伟大的。

现在,我必须将其集成到 HTML 页面中,并将 JSON 数据从 javascript 传递到 Silverlight。我正在使用 SIlverlight 提供的 HTMLBridge 功能,但在调用从 Javascript 构建可视化项的 Silverlight 方法时遇到问题。

Silverlight 中的方法名称是 BuildViz(),它从 Silverlight 画布中删除所有现有元素,然后从名为 JSONData 的公共属性重新构建可视化。JSONData 在设置它的值时调用 BuildViz() 方法:

[ScriptableMember()]
public string JSONData { 
    get { return _JSONData; } 
    set { _JSONData = value; BuildViz(); } 
}

我尝试使用 HTMLBridge 将 JSONData 暴露给 javascript 并通过 javascript 设置它的值,但似乎没有调用 BuildViz() 方法(或者它被调用但它对我的画布没有影响)。不知道从这里去哪里。我在网上看到的 HTMLBridge 示例非常基础,只处理简单的方法,例如将字符串转换为大写并将其值返回给调用 javascript。我需要在 Silverlight 中实际运行一个方法。

任何帮助将不胜感激。

TIA

4

1 回答 1

0

试试这个,或者类似的东西

var silverlightObject = document.getElementById('_the_id_of_your_silverlight_obj_');
var jsonData = { value: 'hello world' }

// invoke setter
silverlightObject.Content._the_object_containing_your_method_.set_JSONData(jsonData);

// invoke getter
jsonData = silverlightObject.Content._the_object_containing_your_method_.get_JSONData();
于 2011-07-01T16:59:22.837 回答