powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / обмен данными между несколькими Silverlight объектами на одной странице
3 сообщений из 3, страница 1 из 1
обмен данными между несколькими Silverlight объектами на одной странице
    #35851284
RuBoris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем!
Есть такой вопрос - как могут несколько SL объектов на одной странице обмениваться данными между собой.
Один способ конечно есть - делать обмен с помощью JavaScript, когда например один SL объект
делает вызов JS функции наподобие

HtmlPage.Window.Invoke("js_function_name", Parameter);

а JS функция js_function_name реализована как-то так:

<script type="text/javascript">
function js_function_name(parameter)
{
var control = document.getElementById("SilverlightControlId");
control.Content.RegisteredObjectName.MethodName(parameter);
}
</script>

RegisteredObjectName - объект, зарегистрированный с помощью метода HtmlPage.RegisterScriptableObject во втором SL объекте

Вопрос, можно ли как-нибудь обмениваться данными без использования JS?

Спасибо
...
Рейтинг: 0 / 0
обмен данными между несколькими Silverlight объектами на одной странице
    #35851481
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В CompositeWPF для этого есть EventAggregator - контейнер сообщений,который позволяет подписчикам и публикаторам быть независимыми друг от друга
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
//Подписываемся для получения сообщения
eventAggregator.GetEvent<TickerSymbolSelectedEvent>().Subscribe(ShowNews,
                                                      ThreadOption.UIThread);
//Обработчик
public void ShowNews(string companySymbol)
{
   articlePresentationModel.SetTickerSymbol(companySymbol);
}

//Raise event
EventAggregator.GetEvent<TickerSymbolSelectedEvent>().Publish(“STOCK0”);
...
Рейтинг: 0 / 0
обмен данными между несколькими Silverlight объектами на одной странице
    #35853333
RuBoris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое SeVa за твою готовность помочь, но честно признаюсь, мне не хватило ума понять как мне может быть полезен EventAggregator.
я нашел такой способ, на всякий случай вкратце изложу, вдруг кому пригодится.

На HTML странице есть 2 Silverlight объекта, первый содержит элемент TextBlock с именем MyText, второй содержит кнопку с именем MyButton. Чтобы при нажатии на кнопку MyButton менялся текст в MyText можно SL объект с этим текстблоком объявить так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
using System.Windows.Browser;

public partial class Page : UserControl
    {
        public Page()
        {
             HtmlPage.RegisterScriptableObject("MyObject", this);
        }

        [ScriptableMember]
        public void SetText(string pText)
        {
            MyText.Text = pText;
        }
}

а во втором объекте обработчик нажатия на кнопку можно сделать таким:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
private void MyButton_Click(object sender, EventArgs e)
{
           // ctl01 - id первого SL объекта
           HtmlElement element = HtmlPage.Document.GetElementById("ctl01");
            ScriptObject content = (ScriptObject)(element.GetProperty("Content"));
            ScriptObject myObject = (ScriptObject)(content.GetProperty("MyObject"));
            myObject.Invoke("SetText", "Hello world");
}
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / обмен данными между несколькими Silverlight объектами на одной странице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]