在浏览器中,我可以使用它来打开一个弹出窗口:
System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(uri), "_blank");
在浏览器之外运行时如何执行此操作?
在浏览器中,我可以使用它来打开一个弹出窗口:
System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(uri), "_blank");
在浏览器之外运行时如何执行此操作?
在 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");
}
}
你没有。System.Windows.Browser.HtmlPage 是对托管 silverlight 应用程序的 HtmlPage 的调用。在浏览器之外,您不是由网页托管。试图这样做只会挂起应用程序。
如果您有提升的权限,那么您可以调用操作系统来打开一个新的浏览器,或者我确信有 3rd 方控件充当托管浏览器。
另一种方法是通过 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