2009-08-07 15 views
2

Ich verwende die neue PagedCollectionView als meine ItemsSource.So implementieren Sie "Live" -Filterung in Silverlight

Ich habe die Collection an ein Datagrid gebunden und müssen das Raster, um nur Werte, die mein Filter wie dies passiert:

  var oc = new ObservableCollection<User>(); 
     var pc = new PagedCollectionView(oc); 
     dataGrid.ItemsSource = pc; 

Wo Benutzerklasse INotifyPropertyChanged implementiert. Ich verwende einen Filter wie folgt:

 private void CheckBox_Checked(object sender, RoutedEventArgs e) 
    { 
     pc.Filter += Include; 
    } 

    private bool Include(object obj) 
    { 
     return (obj as User).Name == filterText.Text; 
    } 

Und es funktioniert. Problem ist, dass das Filterergebnis nicht aktualisiert wird, wenn ich einen Benutzer aktualisiere. Wenn Sie den Filter löschen und erneut anwenden, funktioniert es.

Natürlich kann ich die Refresh() Methode auf der PagedCollectionView aufrufen, aber ich dachte, dass dies möglich war, ohne die Ansicht manuell zu aktualisieren.

Was ich brauche ist ein "Live Filtering" -Mechanismus. Irgendeine Idee, wie man programmiert?

Szenario ist: Eine Anwendung zum Anzeigen von Live-Alarmen auf einem System. Nehmen wir an, ein Benutzer hat ausgewählt, nur Zeilen mit "Fehler" oder "Warnung" in Spalte 0 (das ist mein Filter) anzuzeigen. Wenn column0 in einer Zeile dann von "Info" zu "Warnung" wechselt, sollte diese Zeile automatisch sichtbar sein (sie übergibt den Filter), ohne dass ich Refresh() aufrufen muss.

Dank Larsi

Antwort

0

Könnten Sie einfach nicht die AutoCompleteBox Kontrolle in der 3-SDK Silverlight verwenden?

+0

Hmmmm. nicht sicher, wie ich es verstehe. Ich habe den Beitrag mit einem Szenario aktualisiert, um zu verdeutlichen, was ich brauche – Larsi