Silverlight 3 - вне браузера HtmlPage.Window.Navigate - PullRequest
5 голосов
/ 09 октября 2009

Silverlight 3 позволяет запускать ваше приложение из браузера , которое устанавливает ссылку на рабочий стол / меню Пуск.

Проблема в том, что мы сейчас используем

System.Windows.Browser.HtmlPage.
  Window.Navigate(new Uri("http://<server>/<resource>"), "_blank")

для загрузки URL-адреса в новое окно браузера (для обеспечения печати страницы, удобной для печати). Это работает в обычной версии SL в браузере, но за пределами браузера мы получаем «Мост DOM / сценариев отключен». исключение выдается при отправке вызова.

Есть ли альтернатива, которая работает из браузера?

Я видел Открыть страницу в Silverlight из браузера , но мне нужно сделать это полностью в коде, поэтому я не хочу добавлять (скрытую) кнопку гиперссылки и затем программно «щелкать» это (если я абсолютно не обязан ...).

Ответы [ 2 ]

5 голосов
/ 09 октября 2009

вы можете попробовать наследовать от HyperlinkButton и выставить открытый метод Click () (который затем можно создать и вызвать из кода вместо объявления его в xaml). Подробности здесь: http://mokosh.co.uk/post/2009/10/08/silverlight-oob-open-new-browser-window/

2 голосов
/ 05 февраля 2013

Я написал метод Extension, основанный на идее наследования от HyperlinkButton.

public static class UriExtensions {

class Clicker : HyperlinkButton {
  public void DoClick() {
    base.OnClick();
  }
}

static readonly Clicker clicker = new Clicker();

public static void Navigate(this Uri uri) {
  Navigate(uri, "_self");
}

public static void Navigate(this Uri uri, string targetName) {
  clicker.NavigateUri = uri;
  clicker.TargetName = targetName;
  clicker.DoClick();
}
}

Тогда использовать можно просто, как

новый Uri ("http://www.google.com").Navigate("_blank");

...