Javascript Кнопка, которая запускает метод SilverLight? - PullRequest
1 голос
/ 01 июля 2011

Я создал приложение Silverlight, которое в основном строит изображение поперечного сечения многослойной сферы (представьте концентрические круги) из данных, хранящихся в строке JSON. Строка JSON представляет собой массив значений диаметра + цвета и выглядит следующим образом:

[{"diam":100,"color:"#ffffff"},{"diam":150,color:"#ff0000"}]

У меня все работает в Silverlight. Когда я загружаю приложение в браузере с JSON выше, я успешно получаю рендеринг двух концентрических кругов, внутренний круг белого цвета (#ffffff) диаметром 100 пикселей, а внешний круг красного цвета (# ff0000) с диаметр 150 пикселей. Отлично.

Теперь я должен интегрировать это в HTML-страницу и передать эти данные JSON из javascript в Silverlight. Я использую возможности HTMLBridge, которые предлагает SIlverlight, но у меня возникают проблемы с вызовом метода Silverlight, который создает Viz из Javascript.

Имя метода в Silverlight - BuildViz (), который удаляет все существующие элементы из холста Silverlight, а затем перестраивает визуализацию из открытого свойства с именем JSONData. JSONData вызывает метод BuildViz () после установки его значения:

[ScriptableMember()]
public string JSONData { 
    get { return _JSONData; } 
    set { _JSONData = value; BuildViz(); } 
}

Я пытался представить JSONData для javascript с использованием HTMLBridge и установить его значение с помощью javascript, но кажется, что метод BuildViz () не вызывается (или вызывается, но он не влияет на мой холст). Не уверен, куда идти отсюда. Примеры HTMLBridge, которые я видел в Интернете, очень просты и имеют дело только с простыми методами, такими как преобразование строки в верхний регистр и возвращение ее значения вызывающему javascript. Мне нужно запустить метод в Silverlight.

Любая помощь будет принята с благодарностью.

ТИА

1 Ответ

0 голосов
/ 01 июля 2011

попробуйте это, или что-то вроде этого

var silverlightObject = document.getElementById('_the_id_of_your_silverlight_obj_');
var jsonData = { value: 'hello world' }

// invoke setter
silverlightObject.Content._the_object_containing_your_method_.set_JSONData(jsonData);

// invoke getter
jsonData = silverlightObject.Content._the_object_containing_your_method_.get_JSONData();
...