取消选择不在视野中的ListView项

时间:2012-03-28 19:40:18

标签: wpf listview

在ListView中,我希望所选项目始终可见(在当前视野中)。

实施例: 我的ListView中有六个项目。只有(顶部)五个可见。 我选择了第一个项目。当我向下滚动时,此项目不再可见,但仍保持选中状态。

我想取消选择任何超出当前视图的项目。

1 个答案:

答案 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--;
}
}