2012-03-09 16 views
1

私は基本的な匿名のTwitterアプリを開発しようとしています。私はコンテンツをクリックできるようにしたいと思っています。トゥイーターが投稿した画像など。私はまた、可能であればプロフィール画像を拡大できるようにしたいと考えています。Twitterアプリケーションでテキストのリンクをクリックできるようにするにはどうすればいいですか?

+0

もう少し詳しい情報が必要です。具体的にお聞かせください。 –

+0

このガイドに従っています。http://weblogs.asp.net/scottgu/archive/2010/03/18 /building-a-windows-phone-7-twitter-application-using-silverlight.aspx目的のユーザーからのつぶやきを表示する基本的なアプリケーションを作成します。取得されたつぶやきのリストボックスには、時にはtwittpicなどのリンクがあります。twittpicリンクをクリックして画像を表示し、さらにユーザーのプロフィール画像をクリックして拡大することができます。ありがとう –

答えて

0

テキストにリンクを設定するには、実行時に受信したデータを操作する必要があります。あなたがもはや純粋なテキストでテキストブロックを埋めるのではなく、リンクを実際にハイパーリンクに変えるようにします。

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

上記のコードの欠点は、あなたがデータバインディングを失うということです:This answerを詳細にすることを処理します。新しいテキストを追加するのではなく、既存のテキストブロックを変更するように関数を変更しようとすることもできます。後でリンクを作成するのではなく、自分のアプリケーションでつぶやきを使用し続ける場合にのみ、データコンテキストを維持してください。

これは、XAMLを動的に操作するのに慣れています。

更新:実際には、それをサポートする任意の要素のContentをUIElementにバインドできることが判明しました。だから、例えば無用のコンテナ<StackPanel Content="{Binding MyRichText}"></StackPanel>にTextBoxの行を変更し、あなたがHyperlinkButtonが必要です画像クリッカブルを作るためにあなたのTwitterItem ...


MyRichTextプロパティに上記のコードからあなたtextBlockを割り当てることができます。テンプレートを変更するだけです:

<HyperlinkButton> 
    singleObject 
</HyperlinkButton> 

つまり、画像オブジェクトを囲むことができます。

ハイパーリンクボタンにはNavigateURIというプロパティがあるため、URLのイメージ(または作成者のプロファイルページなど)にバインドするだけです。

<HyperlinkButton NavigateURI="{Binding ImageSource}"> 
    <Image Source="{Binding ImageSource}" Height="73" Width="73" VerticalAlignment="Top" Margin="0,10,8,0"/> 
</HyperlinkButton> 

何かがそうです。たとえば、プロファイルURLを代わりに使用する場合は、NavigateURI="{Binding ImageSource}NavigateURI="{Binding ProfileURL}"に変更し、ProfileItemをTwitterItemに追加し、新しいTwitter項目を作成するURLに設定する必要があります。

これはより簡単な変更です。

関連する問題