scrollviewer内にvirtualizingstackpanelがある場合、scrollviewerはスクロールバーの高さをどのように知るのですか?
たとえば、10,000個のアイテムがある場合、リストを5%しかスクロールしていないことをどのようにして知ることができますか?
アイテムのサイズがわからない場合はどうなりますか?
scrollviewer内にvirtualizingstackpanelがある場合、scrollviewerはスクロールバーの高さをどのように知るのですか?
たとえば、10,000個のアイテムがある場合、リストを5%しかスクロールしていないことをどのようにして知ることができますか?
アイテムのサイズがわからない場合はどうなりますか?
これは非常に優れたリソースです。下部でサンプル プロジェクトをダウンロードできます。あなたが探しているのは、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);
}