Frage

ich habe ein IcollectionView Eigentum genannt Suggestions Welches ist für die Listbox einer Listbox gebunden ItemsSource.

Ich verwende den folgenden Code, um ihn einzurichten

// Set up Suggestions collection for filtering purposes
var collectionViewSource = new CollectionViewSource();

collectionViewSource.Source = SomeCollection; // SomeCollection is of type IEnumerable!! 
// Create view
Suggestions = collectionViewSource.View;

Suggestions.Filter = new Predicate<object>(
                                       item =>
                                       item.ToString().StartsWith(SearchString, true, CultureInfo.CurrentCulture))

SearchString ist für die Textbox gebunden Text Eigenschaft, das, wenn sich ändert, auslöst Suggestions.Refresh() Das kündigt die Sammlung wieder.

Dies funktioniert gut, zeigt jedoch alle verfügbaren Artikel. Wie kann ich es nur die Top X -Artikel zeigen?

War es hilfreich?

Lösung

Kannst du nicht einfach deinen Filter bewegen? Predicate Bedingung zum SomeCollection.Where Klausel?:

SomeCollection = SomeCollection.Where(item => item.ToString().StartsWith(
    SearchString, true, CultureInfo.CurrentCulture)).Take(10);
collectionViewSource.Source = SomeCollection;

Andere Tipps

Seien Sie die Sichtbarkeit mit allen gefilterten Elementen zusammen und setzen Sie die Sichtbarkeit nur für die oberen X -Elemente oder.

Filtern Sie zuerst alle Elemente und legen Sie die oberen x Elemente in eine andere Eigenschaft und binden Sie sie an die Benutzeroberfläche

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top