Добавить гиперссылку на автоматически сгенерированный XML в Silverlight (C #) - PullRequest
0 голосов
/ 22 июня 2009

Недавно на мой вопрос здесь был дан ответ. Теперь, когда мой XML полностью проанализирован и выглядит симпатично, у меня появился еще один вопрос о моем приложении: за последние несколько дней я бился головой о стену.

XML используется для автоматического добавления имен исполнителей в список. Я хочу предоставить ссылки на поиски Amazon от этих художников. В следующей функции XML анализируется, а имя исполнителя затем добавляется в список. Мне нужно как-то поставить гиперссылку на имя этого художника. Кто-нибудь знает, как это возможно?

РЕДАКТИРОВАТЬ: Мне не хватает связи между шагами 2 и 3 в ответе, который был предоставлен. Кроме того, я не понимаю, как работает номер 3 на всех. Я должен признать, что я новичок в программировании Silverlight. Насколько я понимаю, вы делаете привязку на странице XAML. Как это можно сделать для элементов списка, которые еще даже не были созданы?

Кроме того, я понял, что URL-адреса Amazon используют знаки +, где в именах артистов есть пробелы. Я отредактировал код, чтобы отразить это. Пожалуйста, поймите, что гиперссылка в виде текста под каждым именем исполнителя - это не то, что я хочу. ;)

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 Есть ли кто-нибудь, кто может уточнить ответ, предоставленный?

1 Ответ

0 голосов
/ 22 июня 2009

1) Создание объекта Artist с именем и свойством Amazon 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) Затем я использовал бы шаблон данных для привязки имени к текстовому блоку. Text или HyperlinkButton Content и свойство Amazon для HyperlinkButton.NavigateUrl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...