Benutzer mit den meisten Antworten
Autocomplete Box mit einer ObservableCollection

Frage
-
Antworten
-
Hallo,
du könntest von der TextBox das TextChanged-Event abonnieren und die Liste entsprechend filtern. Das Ergebnis weißt du der ListBox dann als ItemsSource zu.private void OnSearchTermChanged(object sender, TextChangedEventArgs e) { var filtered = this.items.Where(x => x.StartsWith(tbSearch.Text)); lbSearchResults.ItemsSource = filtered; } ObservableCollection<string> items = new ObservableCollection<string>();
Im XAML brauchst du natürlich ein ItemTemplate, dass komplexere Elemente anzeigen kann. Im Codebehind musst du den Ausdruck zum filtern der Items entsprechend anpassen.
Wenn deine Liste sehr lang ist, solltest du überlegen die Suche asynchron zu gestalten.
Siehe Asynchrone Programmierung mit Async und Await (C# und Visual Basic)Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert Thomas Klinger2 Montag, 9. Juni 2014 17:26
Alle Antworten
-
Hallo,
du könntest von der TextBox das TextChanged-Event abonnieren und die Liste entsprechend filtern. Das Ergebnis weißt du der ListBox dann als ItemsSource zu.private void OnSearchTermChanged(object sender, TextChangedEventArgs e) { var filtered = this.items.Where(x => x.StartsWith(tbSearch.Text)); lbSearchResults.ItemsSource = filtered; } ObservableCollection<string> items = new ObservableCollection<string>();
Im XAML brauchst du natürlich ein ItemTemplate, dass komplexere Elemente anzeigen kann. Im Codebehind musst du den Ausdruck zum filtern der Items entsprechend anpassen.
Wenn deine Liste sehr lang ist, solltest du überlegen die Suche asynchron zu gestalten.
Siehe Asynchrone Programmierung mit Async und Await (C# und Visual Basic)Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert Thomas Klinger2 Montag, 9. Juni 2014 17:26