Twitter中的可点击网址

Bas*_*tah 1 windows-phone-7

我在我的应用程序中实现了一个简单的twitter阅读器.我能够得到用户的推文.但是,如果这条推文中有一个网址,我就无法点击它,因为它未被检测为网址.是否有可能实现此功能,以便推文中的网址显示为可点击的网址,然后启动,例如webbrowser?

非常感谢你

Ped*_*mas 5

我假设您使用TextBlock来显示推文文本,对吗?如果是这样,将其更改为RichTextBox,您需要做的就是使用Run for text和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;
}
Run Code Online (Sandbox Code Playgroud)

您应该像这样调用此函数:

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

MyRichTextBox.Blocks.Add(ParseTweet(tweetText));
Run Code Online (Sandbox Code Playgroud)