Gdy użytkownik wykonuje sortowanie kolumn w moim DataGrid
, chcę, aby wszystkie puste lub puste komórki były sortowane na dole, a nie na górze.Jak zastosować niestandardową regułę sortowania do elementu DataFrid WPF?
Napisałem IComparer<T>
, który zapewnia, że spacje są zawsze sortowane w dół, ale nie mogę wymyślić, jak zastosować go do kolumn mojego DataGrid
. Zauważ, że początkowy rodzaj DataGrid
, który robię z metodą LINQ OrderBy()
, działa świetnie. Problem polega na tym, że wszystkie kolejne sortowania wykonywane przez użytkownika sortują puste pola do góry.
Kod porównywarka
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);
}
}
Pytania
Jak mogę uzyskać DataGridColumn
używać mojego porównywarka? A jeśli nie jest to możliwe, czy możesz zaproponować obejście? Mam nadzieję na przyjazne dla MVVM rozwiązanie, jeśli to możliwe.
Tylko uwaga, że w zależności od rodzaju kolekcji Twój DataGrid musiało, być może trzeba będzie rzucić wynik GetDefaultView do innego typu [] (http://msdn.microsoft.com/ en-us/library/ms752347.aspx # how_to_create_a_view). – xr280xr