2009-06-21 11 views
0

Kürzlich wurde meine Frage here beantwortet. Jetzt, wo mein XML-Code vollständig geparst ist und ich hübsch aussehe, habe ich eine weitere Frage zu meiner Anwendung. Ich habe meinen Kopf in den letzten paar Tagen gegen eine Wand gestoßen.Hyperlink zu automatisch generiertem XML in Silverlight hinzufügen (C#)

Das XML wird verwendet, um Künstlernamen automatisch zu einer Listbox hinzuzufügen. Ich möchte Links zu Amazon-Suchanfragen von diesen Künstlern bereitstellen. In der folgenden Funktion wird das XML analysiert und der Künstlername wird dann zur Liste hinzugefügt. Ich muss irgendwie einen Hyperlink auf diesen Künstlernamen setzen. Weiß jemand wie das möglich wäre?

EDIT: Ich vermisse die Verbindung zwischen den Schritten 2 und 3 in der Antwort, die zur Verfügung gestellt wurde. Außerdem verstehe ich nicht, wie Nummer 3 überhaupt funktioniert. Ich muss zugeben, ich bin ein Neuling bei Silverlight Programmierung. Aus meiner Sicht tun Sie die Bindung in der XAML-Seite. Wie kann dies für Listbox-Elemente, die noch nicht einmal erstellt wurden, getan werden?

Außerdem habe ich festgestellt, dass die Amazon-URLs + Zeichen verwenden, in denen Leerzeichen in Künstlernamen stehen. Ich habe den Code bearbeitet, um das widerzuspiegeln. Bitte haben Sie Verständnis dafür, dass der Hyperlink als Text unter jedem Künstlernamen nicht das ist, wonach ich suche. ;)

public void DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     if (e.Error == null || e.Error.Message.IndexOf("NotFound") == -1) 
     { 
      ArtistsList.Items.Clear(); 
      uname.Text = "Try Another One!"; 
      XDocument doc = XDocument.Parse(e.Result); 
      var topArtists = from results in doc.Descendants("artist") 
      select results.Element("name").Value.ToString(); 
      foreach (string artist in topArtists) 
      { 
       ArtistsList.Items.Add(artist); 

       string amazonPlus = artist.Replace(" ", "+"); 

       string amazonURL = "http://www.amazon.ca/s/ref=nb_ss_gw?url=search-alias%3Daps&field-keywords=" + amazonPlus + "&x=0&y=0"; 
       ArtistsList.Items.Add(amazonURL); 
      } 
     } 
    } 

EDIT 2 Gibt es jemanden, der die Antwort zur Verfügung gestellt klären können?

Antwort

0

1) Erstellen Sie ein Künstler Objekt mit einem Namen und Amazon URL-Eigenschaft

2) Wenn Sie die XML analysieren, eine Auflistung von Elementen mit LINQ erstellen.

var topArtists = from result in doc.Descendants("artists") 
        select new Artist 
        { 
         Name = result.Element("name").Value, 
         Amazon = new Uri(string.format("http://amazon.com/artist={0}", result.Element("name").Value), UriKind.Absolute), 
        }; 

    ArtistList.ItemsSource = topArtists; 

3) Ich würde dann eine Datenvorlage verwenden Sie den Namen auf einen Textblock Text oder Inhalt Hyperlink und die Amazon-Eigenschaft auf die HyperlinkButton.NavigateUrl zu binden.

Verwandte Themen