想在WP7的外部浏览器中打开Link

Sha*_*een 8 c# browser hyperlink windows-phone-7

该体系结构如下:
单击一个按钮,将打开一个HTML页面,其中包含一个链接.单击链接后,我想在WP7的外部(默认)浏览器中打开它,以便应用程序关闭并在外部打开链接.我该如何实现呢?
在xaml文件中添加了此控件:

<phone:WebBrowser Name="browser" Margin="0,78,0,0" />
Run Code Online (Sandbox Code Playgroud)

点击按钮:

   private void Information_Loaded(Object sender,RoutedEventArgs e)
   {
       Assembly assembly = Assembly.GetExecutingAssembly();

       using (Stream stream = assembly.GetManifestResourceStream("index_en.html"))
       {
           using (StreamReader reader = new StreamReader(stream))
           {
               string html = reader.ReadToEnd();

               browser.NavigateToString(html);                   
           }
       }
Run Code Online (Sandbox Code Playgroud)

现在index_en.html有一个链接,可以在外部浏览器中打开.

dec*_*one 12

通常,您可以使用标记上的Target属性来执行此操作<a>.但是,WP7(至少在模拟器中),这不起作用.

您可以做的是使用Navigating以下事件拦截:

void WebBrowser1_Navigating(object sender, NavigatingEventArgs e)
{
    if (IsSupposedToOpenInPhoneBrowser(e.Uri))
    {
        e.Cancel = true;
        WebBrowserTask task = new WebBrowserTask();
        task.URL = e.Uri.ToString();
        task.Show();
    }
}
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 7

您可以使用它WebBrowserTask来启动浏览器.

我发现你需要转义你传递给它的URL :(


Sor*_*rey 6

你可以使用类似的东西

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    WebBrowserTask webBrowserTask = new WebBrowserTask();
    webBrowserTask.Uri = new Uri("http://www.someUrl.com");
    webBrowserTask.Show(); 
}
Run Code Online (Sandbox Code Playgroud)