2009-06-21 66 views
0

最近,我的問題here被回答。現在我的XML已經被解析並且看起來很漂亮,我還有一個關於我的應用程序的問題,在過去的幾天裏我一直在撞牆。在Silverlight中添加超鏈接自動生成XML(C#)

XML用於自動將藝術家名稱添加到列表框。我想要做的是提供這些藝術家的亞馬遜搜索鏈接。在下面的函數中,解析XML並將藝術家名稱添加到列表中。我需要以某種方式將超鏈接放在這個藝術家的名字上。有人知道這可能嗎?

編輯:我錯過了已提供的答案中步驟2和3之間的連接。另外,我不明白3號是如何工作的。我必須承認我是Silverlight編程的新手。根據我的理解,您可以在XAML頁面中進行綁定。對於尚未創建的列表框項目,這怎麼做?

此外,我意識到亞馬遜網址使用+符號的空間是藝術家名稱的東西。我編輯了代碼以反映這一點。請理解,將超鏈接作爲每個藝術家名下的文本不是我要追求的內容。 ;)

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是否有任何人誰可以明確的答案提供?

回答

0

1)創建一個名稱和亞馬遜url屬性

2)藝術家對象當您解析XML,創建使用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)然後,我會使用數據模板的名稱綁定到一個TextBlock 文本或HyperlinkBut​​ton內容與亞馬遜屬性的 HyperlinkButton.NavigateUrl