2009-06-10 27 views
5

Así que tengo una cuadrícula de datos para la que necesito agregar ordenación personalizada y también necesito saber el orden exacto de la ordenación.Silverlight y icollectionview

He leído para poder hacerlo Necesito implementar una vista de colección de contenido personalizada y vincularla a la cuadrícula de datos.

El problema que tengo es que la documentación que Microsoft da en esta interfaz no es tan buena. ¿Alguien sabe cómo hacer esto o tiene algunos buenos tutoriales sobre cómo implementar esta interfaz para Silverlight?

Respuesta

5

Estoy buscando el mismo, y encontré este artículo desde Colin Eberhardt. Muestra cómo implementar la ordenación usando una implementación de ICollectionView

Si descubres cómo implementar el filtrado, házmelo saber.

+0

Pude obtener el código en el artículo trabajando para ordenar mi cuadrícula. – zachary

0

Así es como se hace una clasificación usando ICollectionView.

ICollectionView view = CollectionViewSource.GetDefaultView(someCollection); 
view.SortDescriptions.Add(new SortDescription("someProperty", ListSortDirection.Ascending)); 
view.SortDescriptions.Add(new SortDescription("someOtherProperty", ListSortDirection.Descending)); 

Sin embargo no es exactamente lo que yo llamaría "la clasificación personalizada" ... Simplemente le permite elegir los criterios de ordenación y dirección. ¿Podría ser más específico sobre lo que quiere hacer?

+0

el problema que tengo aquí es que Silverlight en realidad no tiene CollectionViewSource, así que voy a tener que implementarlo – zachary

+0

OK, no me di cuenta de que esta clase faltaba en Silverlight. Lo extraño es que la interfaz ICollectionView está presente, pero no parece haber ninguna clase que la implemente ... incluso la clase ItemCollection no lo hace (en WPF sí lo hace). Weird ... –

+0

Sí raro ... y molesto. Realmente podría usar una implementación de esta clase. –

1

El mejor ejemplo que he encontrado es la implementación de ICollectionView de Microsoft que se creó para su uso con DataGrid. Desafortunadamente, lo etiquetaron internamente por lo que no puedes usarlo directamente (y una copia & pegar de la fuente requiere algunas modificaciones). Descomprime Reflector y abre System.Windows.Controls.Data.dll - navega hasta el espacio de nombres System.Windows.Controls y allí puedes encontrar ListCollectionView. Esta es la definición para mostrar que implementa ICollectionView:

ListCollectionView clases interna: ICollectionView, INotifyCollectionChanged, INotifyPropertyChanged, IEnumerable ...

Realmente deseo MS proporcionaría esta clase - prácticamente todas las aplicaciones de LOB lo necesita.

2

Silverlight 3 ahora es compatible e implementa el ICollectionView, llamado PagedCollectionView.

Esto proporciona la clasificación y la agrupación, pero no el filtrado.