Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向LongListSelector添加项目后出现滚动问题_C#_Xaml_Windows Phone 8 - Fatal编程技术网

C# 向LongListSelector添加项目后出现滚动问题

C# 向LongListSelector添加项目后出现滚动问题,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我正在一个长列表中显示YouTube视频。当这个人到达我使用拉刷新类的列表末尾时,会添加新的视频(每次20个) 现在列表中显示了新的视频,但我只能滚动浏览其中的20个。如果我滚动超过这个范围,我可以看到列表项,但它会以橡皮筋效果向后滚动。现在,当我点击任何可见的项目时,我被发送到下一页,当我点击后退按钮时,LongListSelector现在显示所有项目,没有问题 代码如下: private void GetYoutubePlaylist(string feedXML) { try

我正在一个长列表中显示YouTube视频。当这个人到达我使用拉刷新类的列表末尾时,会添加新的视频(每次20个)

现在列表中显示了新的视频,但我只能滚动浏览其中的20个。如果我滚动超过这个范围,我可以看到列表项,但它会以橡皮筋效果向后滚动。现在,当我点击任何可见的项目时,我被发送到下一页,当我点击后退按钮时,LongListSelector现在显示所有项目,没有问题

代码如下:

private void GetYoutubePlaylist(string feedXML)
{
    try
    {
        StringReader stringReader = new StringReader(feedXML);
        XmlReader xmlReader = XmlReader.Create(stringReader);
        SyndicationFeed feed = SyndicationFeed.Load(xmlReader);


        YoutubeVideo video = null;

        foreach (SyndicationItem item in feed.Items)
        {
            video = new YoutubeVideo();

            video.YoutubeLink = item.Links[0].Uri;
            string a = video.YoutubeLink.ToString().Remove(0, 31);
            video.Id = a.Substring(0, 11);
            video.Title = item.Title.Text;
            video.PubDate = item.PublishDate.DateTime;

            video.Thumbnail = YouTube.GetThumbnailUri(video.Id, YouTubeThumbnailSize.Small);

            videosList.Add(video);
        }
        if (video != null)
        {
            MainListBox.ItemsSource = videosList;

        }
    }
    catch { }
}

我如何解决这个问题?

经过一番努力,我终于可以解决这个问题了。我所需要做的就是,在将videoslist指定为MainListBox的ItemSource之前,我将null指定给ItemSource。工作得很好

这是最后的代码

private void GetYoutubePlaylist(string feedXML)
        {
         var last = new YoutubeVideo(); //scroll to this item when new items are loaded
        if(videosList.Count > max_results)
            last = videosList[videosList.Count - 11];
        try
        {
            StringReader stringReader = new StringReader(feedXML);
            XmlReader xmlReader = XmlReader.Create(stringReader);
            SyndicationFeed feed = SyndicationFeed.Load(xmlReader);

            YoutubeVideo video;

            foreach (SyndicationItem item in feed.Items)
            {
                video = new YoutubeVideo();

                video.YoutubeLink = item.Links[0].Uri;
                string a = video.YoutubeLink.ToString().Remove(0, 31);
                video.Id = a.Substring(0, 11);
                video.Title = item.Title.Text;
                video.PubDate = item.PublishDate.DateTime;

                video.Thumbnail = YouTube.GetThumbnailUri(video.Id, YouTubeThumbnailSize.Small);

                videosList.Add(video);
            }

            MainListBox.ItemsSource = null;
            MainListBox.ItemsSource = videosList;
            if(last.Id!=null)
            MainListBox.ScrollTo(last as YoutubeVideo);
        }
        catch {            }
    }