如果我的scrollviewer中有一个virtualizingstackpanel,那么我的scrollviewer如何知道滚动条需要的高度?
例如,如果我有10,000个项目,它怎么知道我只在列表中滚动了5%?
如果我不知道物品的大小怎么办?
答案 0 :(得分:0)
this是一个非常好的资源,您可以在底部下载示例项目。我认为您正在寻找的是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);
}