我在我的应用程序中实现了一个简单的twitter阅读器.我能够得到用户的推文.但是,如果这条推文中有一个网址,我就无法点击它,因为它未被检测为网址.是否有可能实现此功能,以便推文中的网址显示为可点击的网址,然后启动,例如webbrowser?
非常感谢你
我假设您使用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)
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |