【问题标题】:LongListSelector scrolling issue after adding items to it向其中添加项目后 LongListSelector 滚动问题
【发布时间】:2016-07-19 03:22:43
【问题描述】:

我在 LongListSelector 中显示 YouTube 视频。当此人到达我正在使用来自Here 的下拉刷新类的列表末尾时,将添加新视频(一次 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 { }
}

我该如何解决这个问题?

【问题讨论】:

    标签: c# xaml windows-phone-8


    【解决方案1】:

    经过大量的挠头后,我能够做到这一点。我所要做的就是,在将视频列表分配为 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 {            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2017-11-11
      • 2013-05-06
      • 1970-01-01
      相关资源
      最近更新 更多