windows phone 巧用RichTextBox導航到外部url。

來源:互聯網
上載者:User

 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 顯示超連結。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.