0

我想在包含 Web 服务的代码和 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();
        }
    }
4

1 回答 1

1

当然,在数据绑定和可观察集合的帮助下,这是可能的。您可以使用ObservableCollection,而不是每次获得新元素时都添加新的列表框项。将列表框的数据源设置为可观察集合。
使用ObservableCollection的好处是,每当您从集合中添加或删除元素时,您的列表框都会自动反映这一点。因此无需手动添加或删除listboxItems。如果您的 listboxItem 具有自定义布局,那么您可以创建一个 dataTemplate 并将数据绑定到需要在listboxItem中显示的元素。

于 2011-07-22T10:55:39.950 回答