RichTextBox 大家都熟悉了,可以用Hyperlink来加超链接。
如下的代码就可以实现超链接。
Displaying text with hyperlink .
但是在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 的链接就可以启动了哦。
今天先写到这里,改天写写怎么识别一大堆文字中的url并且可以在RichTextBox 显示超链接。