2012-03-28 8 views
0

In einer ListView möchte ich, dass die ausgewählten Elemente immer sichtbar sind (im aktuellen Sichtfeld).ListView-Elemente abwählen, die nicht im Sichtfeld sind

Beispiel: Ich habe sechs Elemente in meinem ListView. Nur (die oberen) fünf sind sichtbar. Ich wähle den ersten Gegenstand. Wenn ich nach unten scrolle, ist dieses Element nicht mehr sichtbar, aber es bleibt ausgewählt.

Ich möchte jedes Objekt deaktivieren, das die aktuelle Ansicht verlässt.

+1

Was ist Geschäftszweck? Warum möchte ein Benutzer, dass ein Element nicht ausgewählt wird, nur weil er nicht mehr angezeigt wird? Ich denke, dass Sie Ihr eigenes Scrollen implementieren müssen, um zu wissen, welche Elemente in Sicht sind. – Paparazzi

+0

Das ist eine gültige Frage. Ich benutze das ListView für seine Funktionalität. Es ist nicht die Kontrolle, mit der der Endbenutzer interagiert. – Jowen

+0

OK, aber ich bin noch mehr verwirrt. Die Problembeschreibung liest sich so, als ob Sie das ListView als UI-Steuerelement verwenden. – Paparazzi

Antwort

0

Ich löste es manuell, also ist es mehr eine Ausweichlösung. Ich behalte nur den Index ...

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