ListView对应包含数据的选定项返回null

时间:2012-10-23 15:20:33

标签: c# listview windows-runtime

我有代码从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));  


    }

1 个答案:

答案 0 :(得分:0)

尝试在LINQ末尾添加.ToList()。

*编辑(评论摘要)

您正在处理ItemClick事件,它似乎是在ListViewBase上的选择属性发生更改之前引发的。由于此时未更新 - 您可以检查e.ClickedItem并将其强制转换为FlickrImage以获取您点击的项目。

如果您确实想使用选择属性 - 您应该处理SelectionChanged事件。