我正在修复一些使用 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() 甚至没有出现在萤火虫中。但两者都告诉我“window.opener.refreshControlPointsLayer 不是函数”。我已经打开了 xap 文件,但它包含的只是 dll 文件。
我把silverlight对象叫错了吗?有没有人有过类似的事情发生在他们身上?任何人都知道我应该如何从aspx页面正确调用xap文件以便我可以使用它的功能吗?感谢您的任何帮助。