如何在WP7 RichTextBox导航外部url?RichTextBox 大家都熟悉了,可以用Hyperlink来加超链接。

  如下的代码就可以实现超链接。

<RichTextBox IsReadOnly="True">
<Paragraph>
Displaying text with
<Hyperlink NavigateUri="http://www.sohu.com">hyperlink</Hyperlink> .
</Paragraph>
</RichTextBox>

 

但是在windows phone中如果链接是外部的网址会导航失败,因为windows phone中要启动浏览器必须用WebBrowserTask。

OK 那么我们就来改造下使用WebBrowserTask吧,也许有人会说这个好办在 Hyperlink 的Click事件中启动一个WebBrowserTask

不就可以了么,恩不错这也是一个办法,但是你难道要处理每一个 Hyperlink 的Click事件么? 不,我们有另外的办法

其实导航失败的话在debug模式下导航失败会跳转到App.xaml.cs的void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)函数。我们就在他里面改造吧。

 void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
{
if (JDCommonFun.IsUrl(e.Uri.ToString()))
{
WebBrowserTask task
= new WebBrowserTask();
task.Uri
= e.Uri;
task.Show();
}
else
{
if (System.Diagnostics.Debugger.IsAttached)
{
// A navigation has failed; break into the debugger
System.Diagnostics.Debugger.Break();
}
}

}

上边还有个函数来匹配是否是url

   public static bool IsUrl(string str_url)
        {

            return System.Text.RegularExpressions.Regex.IsMatch(str_url, @"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?");

        }

 

这样你 Hyperlink 的链接就可以启动了哦。

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"