arcgis と一緒に Silverlight を使用する古いコードを修正しています。シルバーライトの部分は時間の経過とともに壊れました。元々使用されているコードは次のとおりです。
<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;
}
しかし、firebugで私ができることは
<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ファイルを適切に呼び出して、その機能を使用できるようにする方法を頭のてっぺんから知っている人はいますか? 助けてくれてありがとう。