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但是我需要完全在代码中执行此操作,因此我不想添加(隐藏)超链接按钮,然后以编程方式“单击”它(除非我绝对必须。 ..)。
答案 0 :(得分:5)
您可以尝试继承HyperlinkButton并公开公共Click()方法(然后您可以实例化并从代码调用而不是在xaml中声明它)。 详情请见http://mokosh.co.uk/post/2009/10/08/silverlight-oob-open-new-browser-window/
答案 1 :(得分:2)
我根据从HyperlinkButton继承的想法编写了一个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”);