如何在列表框中获得确切的滚动位置?

Jim*_*röm 4 silverlight listbox windows-phone-7

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

当我到达顶部并下拉时,我的列表框显示与时间相关的项目我希望看到一些文本,例如"向下滚动以查找更多项目",如果这样做,则会触发先前发生的项目的数据下载.

对于底部项目同样的事情,如果你足够远(在最后一项下面它触发的数据下载项目晚于列出的项目).

我不是在一个无缝的列表框之后,我希望只有当我滚动upp或向下滚动并释放时才会触发数据下载.我希望这种描述有意义.

基本上我需要知道的是列表框中的确切滚动位置,以便我可以确定何时拖动和释放列表很远或向上.对于那些拥有iPhone的人,我所使用的效果会在Facebook应用中使用.

干杯

/麦

Dam*_*ian 13

要获得精确的滚动位置,您需要获得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;
}
Run Code Online (Sandbox Code Playgroud)