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