Estoy vinculando ItemsControl a CollectionViewSource. Aquí está el código:CollectionViewSource no reordena en el cambio de propiedad
this.Trucks = new ObservableCollection<Truck>();
foreach (var truck in DataRepository.Trucks.Where(t => t.ReadyDate.Date.Equals(this.Date)))
{
this.Trucks.Add(truck);
}
this.TrucksSource = new CollectionViewSource { Source = this.Trucks };
this.TrucksSource.SortDescriptions.Add(new SortDescription("ReadyAddress.Region.RegionNumber", ListSortDirection.Ascending));
this.TrucksSource.SortDescriptions.Add(new SortDescription("TruckId", ListSortDirection.Ascending));
Cuando inicialmente atasco - la clasificación funciona. Cuando agrego el elemento a ObservableCollection, se inserta en el lugar adecuado, eso es bueno. Pero cuando cambio la propiedad que clasifico, este elemento no se "desplaza" en una lista.
ReadyAddress.Region.RegionNumber
plantea correctamente INotifyPropertyChanged y lo veo en los campos vinculados, pero el orden no cambia. ¿Espero algo que no debería suceder o hay una mejor manera de manejar esto?
Consulte mi respuesta para [Ordenar descripción y actualización ordenada automática] (http://stackoverflow.com/a/7372522/620360). – LPL
Hay una nueva característica en WPF 4.5 llamada live shaping que resuelve este problema, pero puede que tenga que usar el método vinculado por LPL por el momento si no desea llamar a Refresh. – Kris
Pude arreglar esto simplemente llamando a PropertyChanged en la propiedad que expone la vista, permitiendo que la vista se actualice (y borre la clasificación) y luego agregue las descripciones de clasificación. – PatFromCanada