我有代码从Flickrs Rest服务接收数据并填充ListView。这段代码工作正常,当我运行我的应用程序时,我可以搜索照片并显示它们的列表。但是我想获得单个照片数据但是当我尝试从ListView访问这些数据时它完全是空的(我调试它并且它只包含空条目)。我没有很多C#的经验所以无论如何可以告诉我为什么我会得到null结果?
private async void ParseFlickrResponse(HttpResponseMessage response)
{
XDocument xml = XDocument.Parse(await response.Content.ReadAsStringAsync());
var photos = from results in xml.Descendants("photo")
select new FlickrImage
{
ImageId = results.Attribute("id").Value.ToString(),
FarmId = results.Attribute("farm").Value.ToString(),
ServerId = results.Attribute("server").Value.ToString(),
Secret = results.Attribute("secret").Value.ToString(),
Title = results.Attribute("title").Value.ToString()
};
FlickrListView.ItemsSource = photos;
}
EDITED
当前代码:
enter code here:
private async void ParseFlickrResponse(HttpResponseMessage响应) {
XDocument xml = XDocument.Parse(await response.Content.ReadAsStringAsync());
var photos = from results in xml.Descendants("photo").ToList()
select new FlickrImage
{
ImageId = results.Attribute("id").Value.ToString(),
FarmId = results.Attribute("farm").Value.ToString(),
ServerId = results.Attribute("server").Value.ToString(),
Secret = results.Attribute("secret").Value.ToString(),
Title = results.Attribute("title").Value.ToString()
};
FlickrListView.ItemsSource = new ObservableCollection<FlickrImage>(photos);
}
private void GetPhotoSource(object sender, ItemClickEventArgs e)
{
int inx = FlickrListView.SelectedIndex;
// FlickrImage t = lst.First();
FlickrImage t = lst.ElementAt(inx);
MyImage.Source = new BitmapImage(new Uri(t.ImageUrl.ToString(), UriKind.Absolute));
}
答案 0 :(得分:0)
尝试在LINQ末尾添加.ToList()。
*编辑(评论摘要)
您正在处理ItemClick事件,它似乎是在ListViewBase上的选择属性发生更改之前引发的。由于此时未更新 - 您可以检查e.ClickedItem并将其强制转换为FlickrImage以获取您点击的项目。
如果您确实想使用选择属性 - 您应该处理SelectionChanged事件。