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 的連結就可以啟動了哦。
今天先寫到這裡,改天寫寫怎麼識別一大堆文字中的url並且可以在RichTextBox 顯示超連結。