我正在修复一些使用silverlight和arcgis的旧代码。银光部分随着时间的推移而破裂。最初使用的代码是:
<asp:Silverlight ID="xamlMain" runat="server" Source="ClientBin/ControlPoints.xap" MinimumVersion="3.0.40624.0" Width="100%" Height="100%" />
以及它的召唤方式
function RefreshControlPointLayer() {
var slControl = document.getElementById("xamlMain");
slControl.Content.RefreshControlPointsLayer();
}
我会得到“slControl.Control未定义。”在查看了silverlight调用(我之前没有经验或知道silverlight)后,我发现调用它的方式是旧的,所以我把它改成了新的对象方式。
<object type="application/x-silverlight-2" data="data:application/x-silverlight," width="100%" height="100%">
<param name="source" value="ClientBin/ControlPoints.xap" />
<param name="id" value="xamlMain" />
<param name="runat" value="server" />
<param name="onError" value="onSiliverError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.60310.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style='visibility: hidden; height: 0px; width: 0px; border: 0px'></iframe>
我只是通过调用函数“RefreshControlPointsLayer()来调用它。”在chrome的检查器控制台中,我能够看到此代码
function refreshControlPointsLayer() {
window.opener.RefreshControlPointLayer();
return false;
}
但是我只能在萤火虫中
<td align="center">
<span id="ctl00_Main_gv_import_ctl21_ImportStatus" disabled="disabled" style="color:Red;"></span>
</td><td>10X</td><td>5570.47000</td><td>1244.33900</td><td>473.69900</td><td>BRK-10X bk 25596 pg ?? </td><td> </td>
</tr>
函数refreshControlPointsLayer()甚至没有显示在firebug中。但两个都告诉我“window.opener.refreshControlPointsLayer不是一个函数。”我打开了xap文件,但它包含的所有内容都是dll的。
我是否将Silverlight对象称为错误?有没有人遇到类似的事情?那个头顶的人是否应该知道我应该如何从aspx页面正确调用xap文件以便我可以使用它的功能?感谢您的任何帮助。