Ein später vielleicht wenig, aber diese anderen Benutzer werden so helfen kann ich sowieso posten ...
die CollectionView.Filter auf einem Ereignis Property Basis aktualisiert wird vom Framework nicht unterstützt. Hier gibt es eine Reihe von Lösungen.
1) Implementieren der IEditableObject-Schnittstelle für die Objekte in der Sammlung und Aufrufen von BeginEdit und EndEdit, wenn die Eigenschaft geändert wird, auf der der Filter basiert. Sie können mehr darüber auf dem ausgezeichneten Blog von Dr.WPF hier lesen: Editable Collections by Dr.WPF
2) Erstellen Sie die folgende Klasse und die RefreshFilter-Funktion für das geänderte Objekt.
public class FilteredObservableCollection<T> : ObservableCollection<T>
{
public void RefreshFilter(T changedobject)
{
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, changedobject, changedobject));
}
}
Beispiel:
public class TestClass : INotifyPropertyChanged
{
private string _TestProp;
public string TestProp
{
get{ return _TestProp; }
set
{
_TestProp = value;
RaisePropertyChanged("TestProp");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
var handler = this.PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
FilteredObservableCollection<TestClass> TestCollection = new FilteredObservableCollection<TestClass>();
void TestClass_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "TestProp":
TestCollection.RefreshFilter(sender as TestClass);
break;
}
}
zum Property Ereignis des Testclass Objekt abonnieren, wenn Sie es schaffen, aber nicht vergessen, die Eventhandler aushängen, wenn das Objekt entfernt wird, sonst führen Speicherlecks
OR
Injizieren Sie die Testcollection in die Testclass und verwenden, um die Funktion innerhalb des RefreshFilter TestProp setter. Wie auch immer, die Magie hier wird von NotifyCollectionChangedAction.Replace bearbeitet, die das Element vollständig aktualisiert.
Falls jemand diese findet, es ist ein bisschen veraltet ist jetzt. In WPF 4.5 wurden neue Features hinzugefügt, um das Sortieren, Filtern und Gruppieren von Live-Dateien zu ermöglichen. Siehe http://www.jonathantanoine.com/2011/10/05/wpf-4-5-%E2%80%93-part-10-live-shaping/ –