WP7 RichTextBox导航外部url
如何在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 通用数据层框架
Post Comment
给超链设置target,就能打开了