Un poco tarde tal vez, pero esto puede ayudar a otros usuarios de manera voy a publicar de todos modos ...
Actualización del CollectionView.Filter basado en un evento PropertyChanged no está soportada por el marco. Existen varias soluciones al respecto.
1) Implementando la interfaz IEditableObject en los objetos dentro de su colección, y llamando a BeginEdit y EndEdit al cambiar la propiedad en la que se basa el filtro. Puedes leer más sobre esto en el excelente blog de Dr.WPF aquí: Editable Collections by Dr.WPF
2) Creando la siguiente clase y usando la función RefreshFilter en el objeto cambiado.
public class FilteredObservableCollection<T> : ObservableCollection<T>
{
public void RefreshFilter(T changedobject)
{
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, changedobject, changedobject));
}
}
Ejemplo:
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;
}
}
Suscribirse al evento PropertyChanged del objeto TestClass cuando lo cree, pero no se olvide de desenganchar el manejador de sucesos cuando el objeto se retira, de lo contrario esto puede dar lugar a pérdidas de memoria
O
Inyectar el TestCollection en el TestClass y utilizar la función RefreshFilter dentro del setter TestProp. De todos modos, la magia aquí es trabajada por NotifyCollectionChangedAction.Replace que actualiza el elemento por completo.
En caso de que alguien encuentra esto, que es un poco fuera de fecha ahora. En WPF 4.5, se agregaron nuevas características para permitir la clasificación, el filtrado y la agrupación "en vivo". Ver http://www.jonathanantoine.com/2011/10/05/wpf-4-5-%E2%80%93-part-10-live-shaping/ –