我在我的应用程序中实现了一个简单的twitter阅读器。我能得到一条推文 用户。但是,如果这条推文中有一个网址,我就无法点击它,因为它未被检测为网址。 是否有可能实现此功能,以便显示推文中的网址 作为可点击的网址,然后启动例如webbrowser?
非常感谢
答案 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创建HyperlinkButton