2009-06-21 7 views
0

Récemment, ma question here a été répondue. Maintenant que mon XML est analysé et qu'il est joli, j'ai une autre question sur mon application. Je me suis cogné la tête contre un mur ces derniers jours.Ajouter un lien hypertexte à XML généré automatiquement dans Silverlight (C#)

Le code XML est utilisé pour ajouter automatiquement des noms d'artiste à une liste. Ce que je veux faire est de fournir des liens vers les recherches Amazon de ces artistes. Dans la fonction suivante, le XML est analysé et le nom de l'artiste est ensuite ajouté à la liste. J'ai besoin de mettre un lien hypertexte sur ce nom d'artiste. Est-ce que quelqu'un sait comment cela serait possible?

EDIT: Je manque la connexion entre les étapes 2 et 3 dans la réponse qui a été fournie. En outre, je ne comprends pas comment fonctionne le numéro 3 du tout. Je dois admettre que je suis un néophyte à la programmation de Silverlight. D'après ce que je comprends, vous faites la liaison dans la page XAML. Comment cela peut-il être fait pour les éléments de liste qui n'ont même pas encore été créés?

En outre, j'ai réalisé quelque chose que les URL Amazon utilisent + signes où les espaces sont dans les noms d'artistes. J'ai modifié le code pour refléter cela. S'il vous plaît comprendre que le fait d'avoir le lien hypertexte sous forme de texte sous chaque nom d'artiste n'est pas ce que je vais après. ;)

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 Est-ce qu'il ya quelqu'un qui peut clarifier la réponse fournie?

Répondre

0

1) Créer un objet de l'artiste avec un nom et Amazon Url Propriété

2) Lorsque vous analysez le XML, créer une collection d'objets à l'aide de LINQ.

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) Je voudrais ensuite utiliser un modèle de données pour lier le nom à un TextBlock texte ou le contenu HyperlinkButton et la propriété Amazon à la HyperlinkButton.NavigateUrl.

Questions connexes