2012-03-13 79 views
1

我在我的應用程序中實現了一個簡單的twitter閱讀器。我能夠獲得 用戶的推文。但是,如果此推文中有一個網址,我無法點擊它,因爲它未被檢測爲URL。 是否有可能實現此功能,以便推文中的網址顯示爲 作爲可點擊的網址,然後啓動例如網頁瀏覽器?Clickable Url in Twitter

非常感謝您

回答

5

我假設你正在使用一個TextBlock顯示鳴叫文字,正確?如果是這樣,請將其更改爲RichTextBox,並且您只需使用Run即可獲取文本,並使用Hyperlink作爲鏈接!

另外,請確保將RichTextBox的IsReadOnly屬性設置爲true以使其正常工作!

接下來,用正則表達式解析tweet文本以查找鏈接,並使用Hiperlink類在其上創建可點擊的鏈接,並在其餘文本上運行!

下面是一個示例函數,將解析鳴叫,並建立一個RichTextBox內容:

private Block ParseTweet(string tweetText) 
{ 
    var paragraph = new Paragraph(); 
    var lastIndex = 0; 

    foreach (Match m in Regex.Matches(tweetText, @"(http(s)?://)?([\w-]+\.)+[\w-]+(/\S\w[\w- ;,./?%&=]\S*)?")) 
    { 
     if (m.Index > 0) 
      paragraph.Inlines.Add(tweetText.Substring(lastIndex, m.Index)); 

     var hyperlink = new Hyperlink() 
     { 
      NavigateUri = new System.Uri(m.Value, System.UriKind.RelativeOrAbsolute), 
      TargetName = "_blank" 
     }; 

     hyperlink.Inlines.Add(m.Value); 

     paragraph.Inlines.Add(hyperlink); 

     lastIndex = m.Index + m.Length; 
    } 

    if (lastIndex < tweetText.Length) 
     paragraph.Inlines.Add(tweetText.Substring(lastIndex)); 

    return paragraph; 
} 

你應該調用這個函數像這樣:

var tweetText = @"Testing: http://twitter.com -> link for twitter"; 

MyRichTextBox.Blocks.Add(ParseTweet(tweetText)); 
+0

有一些鏈接,這樣的一個問題我使用了這個修改版本Regex.Matches(tweetText,@「((http(s)?//)|(www。))([\ w-] + \。)+ [\ w-] +(/ \ S \ w [\ w-;,。/?%&=] \ S *)?「) – user3057486 2014-01-08 12:42:14

0

我認爲這是不可能的,但是,但你可以分析你要查找的文本URL(與正則表達式),並顯示下面的文字超鏈接。

1)您搜索的URL文本與正則表達式

2)如果一個URL被發現,你創建一個HyperlinkBut​​ton與此URL