项添加到列表框中的滚动达到Windows Phone中结束了吗?(Add Items to List

2019-09-17 20:53发布

我需要的要求,即..

起初,我已经设置了绑定到列表框DATAS的......如果我们滚动到最后,我会更多一些DATAS添加到集合,并更新列表框......有什么办法在Windows手机实现这一目标?

Answer 1:

我想,通过“实现这个”你的意思是检测的可能性,如果列表框是在年底。 在这种情况下,这应该帮助。

首先,您需要获得对ScrollViewer控件的访问,以查看是否有用户滚动,和当前位置是什么。 如果我的网页被称为listContent中,那么这段代码应该给你一个良好的开端:

public partial class ListContent
{
    private ScrollViewer scrollViewer;

    public ListContent()
    {
        InitializeComponent();
        Loaded += OnLoaded();
    }

    protected virtual void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
    {
        scrollViewer = ControlHelper.List<ScrollViewer>(lbItems).FirstOrDefault();
        if (scrollViewer == null) return;

        FrameworkElement framework = VisualTreeHelper.GetChild(viewer, 0) as FrameworkElement;
        if (framework == null) return;

        VisualStateGroup group = FindVisualState(framework, "ScrollStates");
        if (group == null) return;

        group.CurrentStateChanged += OnListBoxStateChanged;
    }

    private VisualStateGroup FindVisualState(FrameworkElement element, string name)
    {
        if (element == null)
            return null;

        IList groups = VisualStateManager.GetVisualStateGroups(element);
        return groups.Cast<VisualStateGroup>().FirstOrDefault(@group => @group.Name == name);
    }

    private void OnListBoxStateChanged(object sender, VisualStateChangedEventArgs e)
    {
        if (e.NewState.Name == ScrollState.NotScrolling.ToString())
        {
            // Check the ScrollableHeight and VerticalOffset here to determine
            // the position of the ListBox.
            // Add items, if the ListBox is at the end.

            // This event will fire when the listbox complete stopped it's 
            // scrolling animation
        }
    }
}

如果你在谈论动态添加数据,请确保您使用的是一个ObservableCollection为您的数据。 新增项目将自动在ListBox中显示出来。



文章来源: Add Items to ListBox when scroll reaches the end in Windows phone?