我有一个包含链接的文本框。文本的内容是在运行时生成的。我的问题是文本内的链接不可单击,如何使文本块内的所有链接可单击,因此当我点击链接时应该打开Web浏览器。在android中,我们可以使用自动链接进行设置.wp7或wp7.1芒果中是否提供了这样的选项?
最佳答案
使用HyperLink。
<TextBlock>
<Run>Pure Text</Run>
<Hyperlink Command="{Binding HyperLinkTapped}">http://google.com</Hyperlink>
<Run>Pure Text Again</Run>
</TextBlock>
Windows Phone 7.1(Mango)支持此功能。
如果需要,您可以在运行时根据数据创建自己的FlowDocument。
有关如何从字符串生成FlowDocument的示例:
private void OnMessageReceived(string message)
{
var textBlock = new RichTextBox()
{
TextWrapping = TextWrapping.Wrap,
IsReadOnly = true,
};
var paragraph = new Paragraph();
var runs = new List<Inline>();
foreach (var word in message.Split(' '))
{
Uri uri;
if (Uri.TryCreate(word, UriKind.Absolute, out uri) ||
(word.StartsWith("www.") && Uri.TryCreate("http://" + word, UriKind.Absolute, out uri)))
{
var link = new Hyperlink();
link.Inlines.Add(new Run() { Text = word });
link.Click += (sender, e) =>
{
var hyperLink = (sender as Hyperlink);
new WebBrowserTask() { Uri = uri }.Show();
};
runs.Add(link);
}
else
{
runs.Add(new Run() { Text = word });
}
runs.Add(new Run() { Text = " "});
}
foreach (var run in runs)
paragraph.Inlines.Add(run);
textBlock.Blocks.Add(paragraph);
MessagesListBox.Children.Add(textBlock);
MessagesListBox.UpdateLayout();
}
关于windows-phone-7 - 如何在wp7中的可点击文本 block 中设置链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7567600/