2011-02-09 17 views
4

リストボックスの先頭または最後に到達すると、リストボックスにさらにデータを読み込むことができます。リストボックスで正確なスクロール位置を取得するにはどうすればよいですか?

私のリストボックスには、トップに到達してプルダウンするときに関連するアイテムが表示されます。「もっと多くのアイテムを取得するためにさらにスクロールしてください」などのテキストを表示したい場合は、以前に発生したアイテム。

あなたが十分に下に縮小した場合は、最後の項目の下に表示されている項目のデータダウンロードがトリガーされます。

私はシームレスなリストボックスの後ではありません私はuppをスクロールしたり、十分に離れてリリースした場合にのみ、データのダウンロードを開始します。 この説明が意味をなされることを願っています。

基本的に私が知る必要があるのは、リストボックスの正確なスクロール位置であり、リストがドラッグされて遠くにリリースされたときに判断できるようにすることです。 私の後ろにある効果がIPhoneを持っている人のために、Facebookのアプリで使用されています。

乾杯

/ジミー

答えて

4

次の2つの別々のものを探しています。まず、ListBoxのデフォルトのレイアウトを変更して終了コントロールを作成する必要があります。かなりまともな実装はpresented hereでした - 基本的にはItemPresenterの後に追加のコントロールをデフォルトテンプレートに挿入しています。

動的ローディングをお探しの場合、here is an implementation

13

正確なスクロール位置を取得するには、ListBoxのScrollViewerで取得する必要があります。私は(ツームストーンの後、以前のスクロール位置を返すように)ピボットのためにこれを使用 - 私はそれがあまりにもリストボックスのために働くだろうと仮定し...あなたのサンプルの両方が私のプロジェクトを成し遂げるのを助けた

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; 
} 
+0

感謝を。 しかし私は解決策として1つの答えしか設定できません= –

関連する問題