想要在内部打开一个链接,如果它包含一个链接,那么点击它应该在WP7的外部浏览器中打开

时间:2011-02-16 08:53:25

标签: c# windows-phone-7 browser

我有一个浏览器,在无线连接上打开一个Uri,否则打开一个html页面。 在这两种情况下,Uri或html页面都在内部浏览器中打开。这两个页面都包含链接。如果用户点击它们,我想在外部浏览器中打开链接。但它们总是在内部浏览器中打开。

以下是我的代码:

private void Information_Loaded(Object sender, RoutedEventArgs e)
{
    bool hasNetworkConnection =
         NetworkInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211;
    if (!hasNetworkConnection)
    {
        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);
            }
        }
    }
    else
    {
        browser.Navigate(Uri);         
    }
}

xaml是:

<phone:WebBrowser Name="browser" Margin="0,78,0,0" Navigating="on_browser_navigation" />

如何处理Html页面或Uri中的链接点击?

编辑:我处理了导航事件

 private void on_browser_navigation(Object sender, NavigatingEventArgs e)
      {

              e.Cancel = true;
              WebBrowserTask wbt = new WebBrowserTask();
              wbt.URL = e.Uri.ToString();
              wbt.Show();

      }

但是这并没有显示Uri的必要行为。它直接在外部浏览器中打开Uri。

2 个答案:

答案 0 :(得分:2)

处理WebBrowser控件中的Navigating事件。

在那里检查e.Uri以查看它是否是外部链接。如果是这样,请设置e.Cancel = true;,然后使用WebBrowserTask来启动Internet Explorer中的外部链接。

答案 1 :(得分:0)

通过查看URI,我能够检查URI是外部的还是外部的。主持人:

if (!e.Uri.Host.Contains("www.mysite.com"))
{
   e.Cancel = true;
}
else 
{
   'do something
}