Windows phone 8.1 ListView中的无限滚动

Windows phone 8.1 ListView中的无限滚动,windows-phone-8.1,winrt-xaml,Windows Phone 8.1,Winrt Xaml,我试图在我的listview中实现无限滚动 方法是在listview中获取滚动条,并将事件处理程序挂接到它的滚动事件 private void commentaryListView\u已加载(对象发送方、路由目标方) { var scrollViewer=commentaryListView.getFirstDegenantofType(); var scrollbars=新列表(scrollViewer.getgroundantsoftype()); var verticalBar=scr

我试图在我的listview中实现无限滚动

方法是在listview中获取滚动条,并将事件处理程序挂接到它的滚动事件


private void commentaryListView\u已加载(对象发送方、路由目标方)
{
var scrollViewer=commentaryListView.getFirstDegenantofType();
var scrollbars=新列表(scrollViewer.getgroundantsoftype());
var verticalBar=scrollbars.FirstOrDefault(x=>x.Orientation==Orientation.Vertical);
如果(垂直条!=null)
verticalBar.Scroll+=BarScroll;
}
private void BarScroll(对象发送方,ScrollEventArgs e)
{
if(e.ScrollEventType!=ScrollEventType.EndScroll)返回;
var bar=作为滚动条的发送方;
如果(bar==null)返回;
如果(例如,新值>=最大值)
{
datacontext.pageCommentaryItems();
}
}
我似乎不知道我在这里做什么,但它从来没有击中BarScroll事件处理程序


谢谢你的帮助。谢谢:)

我建议您直接使用ListView的ViewChanged事件:

    private void OnListViewLoaded(object sender, RoutedEventArgs e)
    {
        var listview = sender as ListViewBase;
        if (listview != null)
        {
              // Attach to the view changed event
            _scrollViewer = listview.GetFirstDescendantOfType<ScrollViewer>();
            if (_scrollViewer != null)
            {
                _scrollViewer.ViewChanged += OnViewChanged;
            }
        }
    }

    private void OnViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
    {
        // If scrollviewer is scrolled down at least 90%
        if (_scrollViewer.VerticalOffset > Math.Max(_scrollViewer.ScrollableHeight * 0.9, _scrollViewer.ScrollableHeight - 150))
        {
            // Execute whatever you want
        }
    }
private void OnListViewLoaded(对象发送方,路由目标)
{
var listview=发送方作为ListViewBase;
如果(listview!=null)
{
//附加到视图更改事件
_scrollViewer=listview.GetFirstDegenantofType();
如果(_scrollViewer!=null)
{
_scrollViewer.ViewChanged+=OnViewChanged;
}
}
}
私有void OnViewChanged(对象发送者,ScrollViewServiceChangedEventArgs e)
{
//如果scrollviewer向下滚动至少90%
如果(_scrollViewer.VerticalOffset>Math.Max(_scrollViewer.ScrollableHeight*0.9,_scrollViewer.ScrollableHeight-150))
{
//执行任何你想要的
}
}

一个更简单的解决方案是创建一个可观察的集合,实现ISupportIncrementalLoading接口并将其绑定到ListView。这将使ListView进行增量滚动,而无需自己实现。请参见

当项目添加到底部时,此选项仅支持无限加载。如果我想从底部到顶部进行无限加载,该怎么办?