Кликабельный URL в Твиттере - PullRequest
1 голос
/ 13 марта 2012

Я реализовал простую читалку в своем приложении. Я могу получить твиты пользователь. Но, если в этом твите есть URL, я не могу щелкнуть по нему, так как он не обнаружен как URL. Есть ли возможность реализовать эту функцию, чтобы отображались ссылки в твите как кликабельный URL, а затем запустить, например, веб-браузер?

Большое спасибо

Ответы [ 2 ]

5 голосов
/ 13 марта 2012

Я предполагаю, что вы используете 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));
0 голосов
/ 13 марта 2012

Я думаю, что это невозможно, но вы можете разобрать свой текст, чтобы найти URL (с регулярным выражением) и отобразить гиперссылку под текстом.

1) вы ищете URL в тексте с регулярным выражением

2) если URL-адрес найден, вы создаете кнопку гиперссылки с этим URL-адресом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...