WindowsPhoneDataBoundApplication с веб-сервисом - PullRequest
0 голосов
/ 22 июля 2011

Я хочу объединить мой код, содержащий веб-службу, и код приложения WindowsPhoneDataBound. Возможно ли это? и как? Мой код:

   private void button1_Click(object sender, RoutedEventArgs e)
    {
        Uri url = new Uri("http://www.google.com/ig/api?weather=" + textBoxVille.Text, UriKind.Absolute);
        WebClient client = new WebClient();
        client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
        client.DownloadStringAsync(url);
    }
    void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error == null)
        {
            StringReader stream = new StringReader(e.Result);
            XmlReader reader = XmlReader.Create(stream);

            reader.MoveToContent();

            while (reader.Read())
            {
                switch (reader.Name)
                {
                    case ("day_of_week"):
                        {
                            listBox1.Items.Add(new ListBoxItem()
                            {
                                Content = reader.GetAttribute("data")
                            });
                        } break;
                    case ("low"):
                        {
                            listBox1.Items.Add(new ListBoxItem()
                            {
                                Content = reader.GetAttribute("data")
                            });
                        } break;
                    case ("high"):
                        {
                            listBox1.Items.Add(new ListBoxItem()
                            {
                                Content = reader.GetAttribute("data")
                            });
                        } break;
                    case ("icon"):
                        {
                            listBox1.Items.Add(new ListBoxItem()
                            {
                                Content = reader.GetAttribute("data")
                            });
                        } break;

                    case ("condition"):
                        {
                            listBox1.Items.Add(new ListBoxItem()
                            {
                                Content = reader.GetAttribute("data")
                            });
                        } break;
                    case ("weather"):
                        break;
                }
            }
            reader.Close();
        }
    }

1 Ответ

1 голос
/ 22 июля 2011

Конечно, это возможно с помощью привязки данных и наблюдаемых коллекций.Вместо добавления новых элементов списка каждый раз, когда вы получаете новый элемент, вы можете использовать ObservableCollection .Установите источник данных списка в наблюдаемую коллекцию.
Преимущество использования ObservableCollection состоит в том, что всякий раз, когда вы добавляете или удаляете элемент из вашей коллекции, ваш список автоматически отображает это.Поэтому нет необходимости вручную добавлять или удалять listboxItems .Если ваш listboxItem имеет пользовательский макет, вы можете создать dataTemplate и привязать данные к элементам, которые должны отображаться в listboxItem .

...