在ListView中,我希望所选项目始终可见(在当前视野中)。
实施例: 我的ListView中有六个项目。只有(顶部)五个可见。 我选择了第一个项目。当我向下滚动时,此项目不再可见,但仍保持选中状态。
我想取消选择任何超出当前视图的项目。
答案 0 :(得分:0)
我手动解决了,所以这更像是一种解决方法。 我只是跟踪索引...
public class ScrollIndexManager
{
private readonly int _viewableItemsCount;
private int _canScrollUpCount;
private int _canScrollDownCount;
public ScrollIndexManager(int viewableItemsCount)
{
_viewableItemsCount = viewableItemsCount;
}
public bool HasChanged { get; set; }
public int BottomVisibleItemIndex
{
get { return TopVisibleItemIndex + _viewableItemsCount - 1; }
}
private int _topVisibleItemIndex = 0;
public int TopVisibleItemIndex
{
get { return _topVisibleItemIndex; }
set
{
if (value < 0)
{
HasChanged = false;
return;
}
_topVisibleItemIndex = value;
HasChanged = true;
}
}
public void SetCanScrollDown(int totalItemCount)
{
_canScrollDownCount = totalItemCount - _viewableItemsCount;
}
public bool CanScrollUp()
{
return _canScrollUpCount > 0;
}
public bool CanScrollDown()
{
return _canScrollDownCount > 0;
}
public bool Increase()
{
TopVisibleItemIndex--;
return HasChanged;
}
public bool Decrease()
{
TopVisibleItemIndex++;
return HasChanged;
}
public void ScrolledUp()
{
_canScrollUpCount--;
_canScrollDownCount++;
}
public void ScrolledDown()
{
_canScrollUpCount++;
_canScrollDownCount--;
}
}