2011-09-27 24 views
6

テキストボックスにはリンクが含まれています。テキストの内容は実行時に生成されます。私の問題は、テキスト内のリンクがクリックできないことですテキストブロック内のすべてのリンクがクリック可能なので、リンクをタップするとWebブラウザが開きます。アンドロイドでは、autolink.Isを使用して設定できます。このようなオプションはwp7またはwp7.1 mangoで利用できますか?wp7でクリック可能なテキストブロックのリンクを設定する方法

答えて

12

HyperLinkを使用してください。

これは、Windows Phone 7.1(マンゴー)からサポートされています。

必要に応じて、実行時に自分のデータから独自のFlowDocumentを作成できます。文字列からFlowDocumentを生成する方法について

例:Silverlightのリッチテキストボックスcontolで

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

完全な例で更新されました。 –

+6

私は7.1を使用していますが、このxamlは私のためにコンパイルされません。 – Nathan

+1

まず、 'ハイパーリンク'、 'l'は小文字でなければなりません。次に、私は7.1プロジェクトでコンパイルするxamlコードを取得できません。 –

2

これを行う機能はありません。

テキスト(リンクを含む)がHTMLの場合、WebBrowserコントロールに表示することができます。
そうでない場合は、テキストを解析して自分でリンクを構築する必要があります。 (WrapPanel内のTextBlocksとHyperlinkBut​​tonの組み合わせはおそらくこれを行う方法です)。

+0

もうハイパーリンクボタンを使用する理由はありません;-) –

2

はあなたを助けることができます。

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

Perfect - ありがとう! –

関連する問題