2009-06-21 2 views
0

최근 내 질문에 here이 (가) 응답되었습니다. 이제는 XML을 모두 파싱하고 예쁘게 보았으므로 지난 며칠 동안 내 머리를 벽에 부딪 히면서 내 애플리케이션에 대한 또 다른 질문이 생겼습니다.Silverlight에서 자동 생성 된 XML에 하이퍼 링크 추가 (C#)

XML은 아티스트 이름을 목록 상자에 자동으로 추가하는 데 사용됩니다. 내가하고 싶은 일은이 아티스트의 Amazon 검색에 대한 링크를 제공하는 것입니다. 다음 함수에서 XML이 파싱되고 아티스트 이름이 목록에 추가됩니다. 어떻게 든이 아티스트 이름에 하이퍼 링크를 삽입해야합니다. 아무도 이것이 어떻게 가능할 지 알고 있습니까?

편집 : 제공된 답변에서 2 단계와 3 단계 사이의 연결이 누락되었습니다. 또한 3 번이 어떻게 작동하는지 이해할 수 없습니다. 나는 실버 라이트 프로그래밍에서 초보자라는 것을 인정해야한다. 내 이해에서 XAML 페이지에서 바인딩을 수행합니다. 아직 작성되지 않은 목록 상자 항목의 경우이 작업을 어떻게 수행 할 수 있습니까?

또한 Amazon URL에 공백이있는 아티스트 이름 + 기호를 사용합니다. 이를 반영하기 위해 코드를 편집했습니다. 각 아티스트 이름 아래에 하이퍼 링크를 텍스트로 사용하는 것이 내가하는 일이 아니라는 점을 이해하시기 바랍니다. ;)

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

편집 2 제공 대답을 명확히 할 사람이 있습니까? 당신이 XML을 구문 분석 LINQ를 사용하여 항목의 컬렉션을 만들 때

답변

0

1) 이름과 아마존 URL 재산권

2)와 아티스트 개체를 만듭니다.

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의 텍스트 또는 HyperlinkButton 내용과 HyperlinkButton.NavigateUrl에 아마존 속성에 이름을 바인딩 데이터 템플릿을 사용할 수 있습니다.