Я предполагаю, что вы используете TextBlock для отображения текста твита, правильно? Если это так, измените его на RichTextBox , и все, что вам нужно сделать, это использовать Выполнить для текста и Гиперссылка для ссылок!
Кроме того, убедитесь, что для свойства IsReadOnly RichTextBox установлено значение true , чтобы оно работало правильно!
Далее, проанализируйте текст твита с помощью регулярного выражения, чтобы найти ссылки, и используйте класс 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));