2011-09-27 10 views
6

Bağlantı kutusunda bir metin kutusu var. Metin içerisindeki metinler çalışma sırasında oluşturulur. Sorun şu ki, metin içindeki bağlantılar tıklanabilir değil, nasıl yapılabilir? metin bloğu içindeki tüm linkler tıklanabilir, böylece bir linke dokunduğumda web tarayıcısını açmalı. Android'de autolink.Is kullanarak bunu ayarlayabiliriz wp7 veya wp7.1 mango'da bu seçenek kullanılabilir mi?Wp7'de bir metin bloğunda tıklanabilir bağlantılar nasıl ayarlanır

cevap

12

HyperLink kullanın.

<TextBlock> 
    <Run>Pure Text</Run> 
    <Hyperlink Command="{Binding HyperLinkTapped}">http://google.com</Hyperlink> 
    <Run>Pure Text Again</Run> 
</TextBlock> 

Bu Windows Phone 7.1 (Mango) desteklenmektedir.

Gerekirse, çalışma zamanında kendi FlowDocument dosyanızı verilerinizde oluşturabilirsiniz. bir dizeden bir FlowDocument oluşturmak için nasıl

Örnek: silverlight RichTextBox contol olarak

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(); 
} 
+0

Tam bir örnekle güncelleştirildi. –

+6

7.1 kullanıyorum ve bu xaml benim için bile derleme değil. – Nathan

+1

İlk önce "Köprü", "küçük harf" olmalıdır. İkinci olarak, bir 7.1 projesinde derlemek için xaml kodunu alamıyorum ... –

2

Bunu yapmak için yerleşik bir işlev yok.

Metniniz (bağlantılar dahil) HTML ise, WebBrowser denetiminde görüntüleyebilirsiniz.
Değilse metni ayrıştırmanız ve bağlantıları kendiniz oluşturmanız gerekir. (Bir WrapPanel'in içindeki TextBlocks ve HyperlinkButtons kombinasyonu, bunun için muhtemelen yoldur.)

+0

HyperlinkButton artık kullanmak için bir neden yok ;-) –

2

size yardımcı olabilir.

<RichTextBox> 
    <Paragraph> 
     <Run Text="This have to navigate me to Google: "/> 
     <Hyperlink NavigateUri="http://google.com" TargetName="_blank">google.com</Hyperlink> 
    </Paragraph> 
</RichTextBox> 
+0

Mükemmel - Teşekkürler! –