浏览器弹出窗口和Silverlight OOB

浏览器弹出窗口和Silverlight OOB,silverlight,silverlight-oob,Silverlight,Silverlight Oob,在浏览器中,我可以使用它打开一个弹出窗口: System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(uri), "_blank"); 在浏览器外运行时如何执行此操作?您不需要。System.Windows.Browser.HtmlPage是对承载silverlight应用程序的HtmlPage的调用。在“浏览器外”中,您的主机不是网页。尝试这样做只会挂起应用程序 如果您具有提升的权限,则可以通过操作系统调用来打开新浏览器,或者我确信有第

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

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

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

您不需要。System.Windows.Browser.HtmlPage是对承载silverlight应用程序的HtmlPage的调用。在“浏览器外”中,您的主机不是网页。尝试这样做只会挂起应用程序


如果您具有提升的权限,则可以通过操作系统调用来打开新浏览器,或者我确信有第三方控件充当托管浏览器。

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

另一种方法是通过ShellExecute:

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

ShellExecute的文档如下:

我不反对使用提升的权限。我需要使用什么操作系统调用?