У меня определен следующий элемент управления Silverlight:
<object id="objImageViewer" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="500px">
<param name="source" value="../ClientBin/SomeImageViewer.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="autoUpgrade" value="true" />
<param name="windowless" value="true" />
<param name="initParams"
value="
Username=<%= ImageViewerUsername %>,
Editable=<%= ImageViewerEditable ? "1" : "0" %>,
Align=<%= ImageViewerAlign ? "1" : "0" %>
" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object>
Я показал следующий метод в моем элементе управления Silverlight (Page.xaml.cs), чтобы он был доступен для Javascript:
[ScriptableMember]
public bool HasPendingUpdates()
{
return btnSave.IsEnabled;
}
У меня на странице aspx есть функция тестирования Javascript, которая пытается что-то с ней сделать:
var imageViewer = $("#objImageViewer")[0];
if (imageViewer.Content.Page.HasPendingUpdates())
{
alert("Pending Changes Exist!");
}
else
{
alert("NO Pending Changes Exist!");
}
Проблема в том, что происходит сбой после объекта Content
. Я проверил следующее:
var imageViewer = $("#objImageViewer")[0];
imageViewer // Valid
imageViewer.Content // Valid
imageViewer.Content.Page // Invalid
imageViewer.Content.HasPendingUpdates() // Invalid
Так что я не уверен, что я делаю неправильно. Как добраться до функции внутри Контента?
Я использую IE8, Silverlight 3, ASP.NET. Элемент управления silverlight создается с тегом объекта, поскольку я не думаю, что этот элемент управления является опцией в Silverlight 3+.
Любая помощь будет высоко ценится.