Windows phone 7 刷新列表框

Windows phone 7 刷新列表框,windows-phone-7,windows-phone,Windows Phone 7,Windows Phone,我已经发布了我的问题,我希望这次能得到答案,我正在尝试使用列表框中的变量foreach-elment刷新我的列表框,但我只得到了新元素,其他项目删除了她的我的代码: private void refresh() { RestClient client = new RestClient(); client.BaseUrl = "http"; RestRequest request = new RestRequest(); request.Method = Met

我已经发布了我的问题,我希望这次能得到答案,我正在尝试使用列表框中的变量foreach-elment刷新我的列表框,但我只得到了新元素,其他项目删除了她的我的代码:

private void refresh()
{
    RestClient client = new RestClient();
    client.BaseUrl = "http";

    RestRequest request = new RestRequest();

    request.Method = Method.GET;
    request.AddParameter("action", "atms");

    request.AddParameter("lang", "ar");
    request.AddParameter("mode", "xml");
    request.AddParameter("appli", "WP");
    request.AddParameter("city_id", selectedState._id);
    client.ExecuteAsync(request, ParseFeedCallBack_ListAgence);
}

public void ParseFeedCallBack_ListAgence(IRestResponse response)
{
    if (response.StatusCode == HttpStatusCode.OK)
    {
        ParseXMLFeedAgences(response.Content);
    }
}

private void ParseXMLFeedAgences(string feed)
{
    if (feed == null)
        return;

    try
    {
        XElement xmlItems = XElement.Parse(feed);
        XDocument xmlItems2 = XDocument.Parse(feed);
        ResultSearch_List.ItemsSource =
            from response in xmlItems.Descendants("result")
            let add = response.Element("Address")
            let idagence = response.Element("id")
            let latt = response.Element("Latitude")
            let longt = response.Element("Longitude")

            select new State
            {
                Address = add == null ? null : add.Value,
                _idagence = idagence == null ? null : idagence.Value,
                Latitude = latt == null ? null : latt.Value,
                Longitude = longt == null ? null : longt.Value,
            };

        foreach (var resp in xmlItems2.Descendants("result"))
        {
            RestClient client = new RestClient();
            client.BaseUrl = "http:";

            RestRequest request = new RestRequest();

            request.Method = Method.GET;
            request.AddParameter("action", "atms_distances");
            request.AddParameter("lang", "ar");
            request.AddParameter("mobile_latitude", "35.843283");
            request.AddParameter("mobile_longitude", "10.61617");
            request.AddParameter("atm_latitude", "35.2579090");
            request.AddParameter("atm_longitude", "10.7992144");

            client.ExecuteAsync(request, response =>
                {
                    ParseXMLFeedDistance(response.Content);
                });
        }
    }
    catch (WebException)
    {
    }
}

private void ParseXMLFeedDistance(string feed)
{
    if (feed == null)
        return;

    try
    {
        XDocument xmlItems2 = XDocument.Parse(feed);

        var list = new List<State>();

        foreach (XElement val in xmlItems2.Descendants("result").Last().Elements())
        {
            list.Add(new State
                {
                    TotalDistance = val.Value,
                });
        }

        ResultSearch_List.ItemsSource = list;
    }
    catch
    {
    }
}

不要使用
列表
作为数据源,而是使用
可观察收集

// keep this in your class
ObservableCollection<State> States { get; set; }

// add to constructor
States = new ObservableCollection<State>();

不要重置列表,您总是在销毁它并从头开始创建。

此解决方案删除了旧的元素,而我得到了新的元素!我不明白,它是否有用?不,你能告诉我第一个列表该怎么办吗,因为第一个元素已被删除,而我只看到新的元素。你是否已将
列表
替换为
可观察集合
?另外,无论何时调用
新ObservableCollection
,都要设置一个断点,此时您正在创建一个新列表。我使用ObservableCollection对列表框的第一次加载做了相同的操作,但问题是他在第一次加载之后为我创建了另一个包含新元素的列表!
// keep this in your class
ObservableCollection<State> States { get; set; }

// add to constructor
States = new ObservableCollection<State>();
private void ParseXMLFeedDistance(string feed)
{
    if (feed == null)
        return;

    try
    {
        XDocument xmlItems2 = XDocument.Parse(feed);

        foreach (XElement val in xmlItems2.Descendants("result").Last().Elements())
        {
            // distance = val.Value;
            list.Add(new State
            {
                TotalDistance = val.Value,
            });
        }
    }
    catch {}
}