2009-10-09 111 views
5

Silverlight 3允许您运行应用程序out of the browser,该应用程序在您的桌面/开始菜单上安装一个链接。Silverlight 3 - 浏览器不支持HtmlPage.Window.Navigate

的问题是我们目前正在使用

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

到URL加载到一个新的浏览器窗口(这是提供一个“打印友好的页面供用户打印)。这在正常的SL浏览器版本中工作,但在浏览器外部,我们得到'DOM /脚本桥被禁用'。发出呼叫时抛出异常。

有没有其他的方法可以在浏览器中使用?

我见过Open page in silverlight out of browser但我需要在代码中完全做到这一点,所以我不想添加(隐藏)超链接按钮,然后以编程方式“点击”它(除非我绝对必须......) 。

回答

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(“ _空”);

+0

不错的工作:)! – Gomino 2015-08-28 17:24:36