5

Silverlight 3 允许您在浏览器之外运行应用程序,浏览器会在您的桌面/开始菜单上安装一个链接。

问题是我们目前正在使用

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

将 URL 加载到新的浏览器窗口中(它是为用户提供打印的“打印友好”页面)。这适用于浏览器内的普通 SL 版本,但在浏览器之外,我们会得到“DOM/脚本桥已禁用”。发出调用时抛出异常。

有没有可以在浏览器中使用的替代方案?

我已经在浏览器中看到了 Silverlight 中的打开页面,但我需要完全在代码中执行此操作,所以我不想添加(隐藏)超链接按钮,然后以编程方式“单击”它(除非我绝对必须...... .)。

4

2 回答 2

5

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

于 2009-10-09T10:39:42.597 回答
2

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

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");

于 2013-02-05T17:27:15.107 回答