Twitter中的可点击网址

时间:2012-03-13 14:36:37

标签: windows-phone-7

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

非常感谢

2 个答案:

答案 0 :(得分:5)

我假设您使用TextBlock来显示推文文本,对吗?如果是,请将其更改为RichTextBox,您需要做的就是使用Run作为文本,使用Hyperlink作为链接!

此外,确保将RichTextBox的IsReadOnly属性设置为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));

答案 1 :(得分:0)

我认为这是不可能的,但您可以解析文本以查找网址(使用正则表达式)并在文本下方显示超链接。

1)您使用正则表达式

搜索文本中的网址

2)如果找到了URL,则使用此URL创建HyperlinkBut​​ton