Silverlight 3 - 浏览器中的HtmlPage.Window.Navigate

时间:2009-10-09 08:28:33

标签: silverlight silverlight-3.0 out-of-browser

Silverlight 3允许您运行应用程序out of the browser,在桌面/开始菜单上安装链接。

问题是我们目前正在使用

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

将URL加载到新的浏览器窗口(这是为了打印用户提供'打印友好'页面)。这适用于普通的SL in-browser版本,但在浏览器之外我们得到'DOM /脚本桥已禁用'。发出呼叫时抛出的异常。

是否有一种可以在浏览器之外使用的替代方案?

我见过Open page in silverlight out of browser但是我需要完全在代码中执行此操作,因此我不想添加(隐藏)超链接按钮,然后以编程方式“单击”它(除非我绝对必须。 ..)。

2 个答案:

答案 0 :(得分:5)

您可以尝试继承HyperlinkBut​​ton并公开公共Click()方法(然后您可以实例化并从代码调用而不是在xaml中声明它)。 详情请见http://mokosh.co.uk/post/2009/10/08/silverlight-oob-open-new-browser-window/

答案 1 :(得分:2)

我根据从HyperlinkBut​​ton继承的想法编写了一个Extension方法。

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();
}
}

然后使用可以简单地使用它,比如

new Uri(“http://www.google.com”)。导航(“_ blank”);