Могу ли я установить свойство экземпляра в Javascript для свойства элемента Scriptable в Silverlight? - PullRequest
1 голос
/ 13 февраля 2012

У меня есть следующие (2) типы 'ScriptableMember' в моем элементе управления Silverlight:

<ScriptableMember()>
Public Property MType As MyCustomType

<ScriptableMember()>
Public Property Message As String

Очевидно, что здесь цель состоит в том, чтобы разрешить экспонирование через мост HTML в Javascript.Вызов свойства 'Message' является тривиальным и работает отлично, как показано ниже:

var SLControl = document.getElementById("SilverlightControl");
SLControl.Content.MyRegisteredControl.Message = 'Hello';

Однако у меня возникают проблемы с установкой значений свойства экземпляра путем детализации его свойств в JS.Код, который я думаю, должен выглядеть следующим образом:

SLControl.Content.MyRegisteredControl.MType.Name = 'John';

Обратите внимание, как я добавил в 'MType', а затем получил доступ к одному из его общедоступных свойств с именем 'Name'.Класс MyCustomType имеет все соответствующие атрибуты 'ScriptableMember', как требуется.

Однако, когда эта строка запускается, я получаю следующую ошибку:

"Ошибка времени выполнения Microsoft JScript: Объект не поддерживает это свойство или метод "

Он отлично работает при назначении 'Message'.Возможно ли в JS развернуть свойство экземпляра и назначить его переменные?Если так, то у меня неправильный JS, или что мне нужно сделать, чтобы это исправить.Спасибо!

1 Ответ

0 голосов
/ 09 марта 2012

Ну, я не получил никакой помощи по этому вопросу, но я понял это, и ответ «да».

1-й У меня есть свойство экземпляра в моем элементе управления Silverlight, которое выглядит следующим образом:

<ScriptableMember()>
Private _MyClass1 As New MyCustomClass
Public Property MyClass1() As MyCustomClass
 Get
   Return _MyClass1
 End Get
 Set(ByVal value As MyCustomClass)
   _MyClass1= value
 End Set
End Property

В соответствии с требованиями моста HTML, зарегистрируйте экземпляр экземпляра класса моего элемента управления, чтобы я мог получить доступ из JavaScript:

HtmlPage.RegisterScriptableObject("MySLControl", Me)

Теперь я подумал Мне нужно было зарегистрировать другого члена выше для свойства экземпляра, но мне не нужно было этого делать. Вы можете перейти к нему через экземпляр основного класса, представленный в виде члена с возможностью сценариев, как показано ниже:

//Get instance of the Silverlight File Upload Control
var SLControl = document.getElementById("SilverlightControl");
if (SLControl != null)
  //Drill down through the instance property exposed on the Silverlight control
  SLControl.Content.MySLControl.MyClass1.Name = "John Smith";

То, что меня оттолкнуло, это то, что мне нужно было зарегистрировать экземпляр типа сценария для свойства экземпляра, но мне не нужно было этого делать. Я могу просто сверлить и получить доступ к собственности.

Следующий пост раскрывает эту тему немного подробнее:
Доступ к свойствам экземпляра в Silverlight из JavaScript

...