2012-03-28 5 views
0

ListView에서 선택한 항목을 항상 (현재보기 필드에서) 표시해야합니다.ListView- 필드가 아닌 항목 선택 해제

예 : 내 ListView에 6 개의 항목이 있습니다. 5 개 (상단) 만 보입니다. 첫 번째 항목을 선택합니다. 아래로 스크롤하면이 항목은 더 이상 표시되지 않지만 선택 항목으로 남아 있습니다.

현재보기에서 나가는 항목을 모두 선택하고 싶습니다.

+1

업무 목적은 무엇입니까? 왜 사용자는 항목이 보이지 않게 되었기 때문에 항목을 선택 취소해야할까요? 나는 당신이보기에 어떤 아이템이 있는지 알기 위해서 당신 자신의 스크롤을 구현할 필요가있을 것이라고 생각한다. – Paparazzi

+0

그것은 유효한 질문입니다. I (ab)는 ListView 기능을 사용합니다. 그것은 최종 사용자가 상호 작용하는 통제가 아닙니다. – Jowen

+0

그래,하지만 나는 훨씬 더 혼란 스럽다. ListView를 UI 컨트롤로 사용하는 것처럼 문제 문이 읽습니다. – Paparazzi

답변

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