Подтвердить что ты не робот

Может ли Silverlight инициировать обновление страницы?

UPDATE: альтернативным заголовком для этого может быть: Как я могу вызвать javascript из приложения silverlight 2.0.

Вот быстрый вопрос для всех вас, гуру Silverlight.

У меня есть приложение Silverlight, которое отображает обратный отсчет секундомера. Приложение размещено в веб-приложении ASP.Net, То, что я хочу сделать, это когда секундомер достигает нуля, приложение заставляет сервер обновлять страницу хостинга.

Возможно ли это?

Если это так, любой шанс фрагмента кода?

4b9b3361

Ответ 1

Видимо, вы можете вызвать JS script из Silverlight, используя

HtmlPage.Window.CreateInstance

или

HtmlPage.Window.Invoke

JavaScript для refresh страница

location.reload(true)

Я не эксперт Silverlight или JavaScript, поэтому не уверен, что он работает во всех браузерах или даже вообще.

EDIT:

Скотт опубликовал комментарий к этому ответу с его окончательным решением.

Ему нужно было создать клиентскую функцию JavaScript на странице ASP.Net с именем reload(), которая сделала location.reload(true). Затем было перезаписано его код С#:

HtmlPage.Window.Invoke("reload");

Как предложено @R4cOON, вы также можете использовать:

System.Windows.Browser.HtmlPage.Document.Submit();

Ответ 2

Почему бы просто не остаться на стороне Silverlight и позвонить

System.Windows.Browser.HtmlPage.Document.Submit();

Работает для меня. Вся страница перезагружается, а элемент управления Silverlight возвращается назад.

Ответ 3

Простое замечание о том, почему HtmlPage.Window.Invoke("location.reload(true);"); не работает: из моего быстрого тестирования видно, что способ Silverlight для реализации Invoke - это поиск свойства с заданным именем на указанном объекте JavaScript и его вызов. Таким образом, этот код сказал бы: "Найти свойство на объекте window с именем" location.reload(true) "; и называть его нулевыми аргументами". Вместо этого существует метод GetProperty, который позволит вам получить свойство location окна и вызвать reload с параметром true. Окончательный код выглядит следующим образом:

((ScriptObject)HtmlPage.Window.GetProperty("location")).Invoke("reload", true);

Ответ 4

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

this.ContentFrame.Navigate(новый Uri ("", UriKind.Relative))

В этом случае я был на своей домашней странице. "" означает домашнюю страницу, если вы изучите шаблонное навигационное решение Silverlight.

Ответ 5

Приложение silverlight можно вызвать в javascript на странице, что, в свою очередь, может привести к обновлению вашей страницы. Так что да, это определенно возможно!