Use HyperLink .
<TextBlock> <Run>Pure Text</Run> <Hyperlink Command="{Binding HyperLinkTapped}">http://google.com</Hyperlink> <Run>Pure Text Again</Run> </TextBlock>
This is supported by Windows Phone 7.1 (Mango).
If necessary, you can create your own FlowDocument from your data at run time.
An example of how to generate a FlowDocument from a string:
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(); }
source share