Cuando el usuario ordena una columna en mi DataGrid
, quiero que todas las celdas vacías o nulas se clasifiquen en la parte inferior, en lugar de en la parte superior.¿Cómo puedo aplicar una regla de clasificación personalizada a WPF DataGrid?
Escribí un IComparer<T>
que asegura que los espacios en blanco siempre estén ordenados hacia abajo, pero no puedo encontrar la forma de aplicarlo a las columnas de mi DataGrid
. Tenga en cuenta que inicial del tipo DataGrid
, que estoy haciendo con el método LINQ OrderBy()
, funciona muy bien. El problema es que todos los géneros subsiguientes realizados por el usuario clasifican los espacios en blanco en la parte superior.
Código Comparer
public class BlankLastStringComparer : IComparer<string>
{
public int Compare(string x, string y)
{
if (string.IsNullOrEmpty(x) && !string.IsNullOrEmpty(y))
return 1;
else if (!string.IsNullOrEmpty(x) && string.IsNullOrEmpty(y))
return -1;
else
return string.Compare(x, y);
}
}
Preguntas
¿Cómo consigo el DataGridColumn
usar mi comparador? O si esto no es posible, ¿puede ofrecer una solución alternativa? Espero una solución amigable MVVM si es posible.
Sólo una nota que, dependiendo del tipo de recopilación de su cuadrícula de datos se une a, puede que tenga que emitir el resultado de GetDefaultView a [un tipo diferente] (http://msdn.microsoft.com/ en-us/library/ms752347.aspx # how_to_create_a_view). – xr280xr