2

在浏览器中,我可以使用它来打开一个弹出窗口:

 System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(uri), "_blank");

在浏览器之外运行时如何执行此操作?

4

3 回答 3

4

在 OOB 应用程序中,您可以使用以下解决方法:

创建一个派生的超链接按钮,如下所示:

public class MyHyperlinkButton : HyperlinkButton 
{ 
        public void ClickMe() 
        { 
                base.OnClick(); 
        } 
} 

使用它进行导航:

private void NavigateToUri(Uri url) 
{ 
        if (App.Current.IsRunningOutOfBrowser) 
        { 
                MyHyperlinkButton button = new MyHyperlinkButton(); 
                button.NavigateUri = url; 
                button.TargetName = "_blank"; 
                button.ClickMe(); 
        } 
        else 
        { 
                System.Windows.Browser.HtmlPage.Window.Navigate(url, "_blank"); 
        } 
}

请参阅 forums.silverlight.net

于 2011-08-23T00:41:32.533 回答
0

你没有。System.Windows.Browser.HtmlPage 是对托管 silverlight 应用程序的 HtmlPage 的调用。在浏览器之外,您不是由网页托管。试图这样做只会挂起应用程序。

如果您有提升的权限,那么您可以调用操作系统来打开一个新的浏览器,或者我确信有 3rd 方控件充当托管浏览器。

于 2011-07-11T20:29:05.400 回答
0

另一种方法是通过 ShellExecute:

if (App.Current.IsRunningOutOfBrowser)  
{ 
    dynamic shell = AutomationFactory.CreateObject("Shell.Application");
    shell.ShellExecute("someURL", "", "", "open", 1);
}

ShellExecute 的文档在这里:http: //msdn.microsoft.com/en-us/library/bb774148 (VS.85).aspx

于 2011-11-01T18:44:28.837 回答