2012-03-28 187 views
0

在ListView中,我希望所選項目始終可見(在當前視野中)。取消選擇不在視野中的ListView項目

例如: 我在我的ListView中有六個項目。只有(頂部)五個可見。 我選擇第一個項目。當我向下滾動時,此項目不再可見,但仍保持選中狀態。

我想要DEselect從任何當前視圖中刪除的項目。

+1

什麼是商業目的?爲什麼用戶希望某個項目因爲它不在視圖中而未被選中?我認爲你需要實現自己的滾動來了解哪些項目在視圖中。 – Paparazzi 2012-03-28 19:51:44

+0

這是一個有效的問題。我(ab)使用ListView的功能。這不是最終用戶與之交互的控制。 – Jowen 2012-03-31 20:05:27

+0

好的,但我更加困惑。問題陳述讀起來就像您使用ListView作爲UI控件一樣。 – Paparazzi 2012-04-01 15:45:26

回答

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