1

scrollviewer内にvirtualizingstackpanelがある場合、scrollviewerはスクロールバーの高さをどのように知るのですか?

たとえば、10,000個のアイテムがある場合、リストを5%しかスクロールしていないことをどのようにして知ることができますか?

アイテムのサイズがわからない場合はどうなりますか?

4

1 に答える 1

0

これは非常に優れたリソースです。下部でサンプル プロジェクトをダウンロードできます。あなたが探しているのは、GetFirstVisibleIndex および GetLastVisibleIndex 関数にあると思います。便宜上、それらを以下にリストしました。基本的に、リストの「トップ」がどれだけ離れているかを追跡するオフセットがあります。アイテムのサイズと組み合わせると、探している値に到達するのに役立ちます

 private int GetFirstVisibleIndex()
 {
    return (int)Math.Floor(_offset.Y / _itemSize.Height);
 }

 private int GetLastVisibleIndex()
 {
    return Math.Min((int)Math.Ceiling((_offset.Y + _viewport.Height) / _itemSize.Height) - 1, GetItemsCount() - 1);
 }
于 2011-11-09T03:12:16.393 に答える