【问题标题】:How do I get the exact scroll position in an Listbox?如何获得列表框中的确切滚动位置?
【发布时间】:2011-02-10 15:48:28
【问题描述】:

当我到达列表框的开头或结尾时,我希望能够将更多数据加载到列表框中。

当我到达顶部并下拉时,我的列表框会显示与时间相关的项目较早发生。

如果您向下滑得足够远,则底部项目也是如此(在最后一个项目下方,它会触发晚于列出的项目的数据下载)。

我不追求无缝列表框,我希望只有当我向上或向下滚动足够远并释放时才会触发数据下载。 我希望这个描述有意义。

基本上,我需要知道列表框中的确切滚动位置,以便确定列表何时被向下或向上拖动和释放。 对于那些有 iPhone 的人,我在 Facebook 应用程序中使用了我所追求的效果。

干杯

/吉米

【问题讨论】:

    标签: silverlight windows-phone-7 listbox


    【解决方案1】:

    要获得准确的滚动位置,您需要在 ListBox 的 ScrollViewer 中获得。我将它用于 Pivots(在墓碑化后返回上一个滚动位置) - 我认为它也适用于 ListBoxes..

    var scrollViewer = FindScrollViewer(listBox);
    var offset = scrollViewer.VerticalOffset;
    
    static ScrollViewer FindScrollViewer(DependencyObject parent)
    {
        var childCount = VisualTreeHelper.GetChildrenCount(parent);
        for (var i = 0; i < childCount; i++)
        {
            var elt = VisualTreeHelper.GetChild(parent, i);
            if (elt is ScrollViewer) return (ScrollViewer)elt;
            var result = FindScrollViewer(elt);
            if (result != null) return result;
        }
        return null;
    }
    

    【讨论】:

    • 感谢您的两个示例帮助我完成了项目。但是我只能设置一个答案作为解决方案=/
    【解决方案2】:

    您正在寻找两个不同的东西。首先,您需要更改 ListBox 的默认布局以具有结束控件。一个相当不错的实现是presented here - 您基本上是在默认模板中的ItemPresenter 之后插入一个额外的控件。

    寻找动态加载,here is an implementation。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      相关资源
      最近更新 更多