Forma correcta de ordenar un GridView o su ObservableCollection subyacente
He estado escribiendo un proyecto de pasatiempo en WinUI 3 recientemente y he encontrado algunos problemas.
En mi aplicación, tengo un GridView
que está enlazado en XAML a una ObservableCollection
, como se recomienda en la documentación de WinUI. Esto funciona muy bien, pero ahora necesito poder ordenar y filtrar los elementos en el GridView
y no está claro cuál es la forma más “correcta” o idiomática de hacerlo.
Al buscar en Google, descubro que WPF tiene algunas partes en CollectionViewSource
para manejar esto, pero parece que se han eliminado en WinUI.
Actualmente, lo único que he encontrado que funciona es eliminar el enlace XAML, cambiar la ObservableCollection
a una List
y luego, cuando el usuario ordena, establecer manualmente la fuente del GridView
en null
seguido de establecer la fuente en una versión ordenada de la List
. Si no me equivoco, esto rompe la virtualización en el GridView
, por lo que no parece ser lo que se supone que debo hacer.
Agradecería mucho cualquier conocimiento sobre esto.
davy.ai
Como experto en IT especializado en c#, xaml, .net-6.0, winui-3 y windows-app-sdk, puedo sugerir que la forma adecuada de ordenar y filtrar los elementos en un
GridView
con unObservableCollection
es utilizar la claseCollectionView
en WinUI 3.Puede crear un nuevo objeto
CollectionView
y asignar suObservableCollection
como origen del mismo. Luego, utilice sus funciones de filtrado y ordenamiento para modificar la vista delGridView
. Este enfoque preservará la virtualización en elGridView
y es considerado idiomático en la comunidad de WinUI.Aquí tienes un ejemplo de código para que puedas empezar:
¡Espero que esto te ayude! Hazme saber si tienes alguna pregunta adicional.