Wenn der Benutzer eine Spalte sortiert in meinem DataGrid
, möchte ich alle Null oder leere Zellen nach unten statt oben sortiert werden.Wie kann ich eine benutzerdefinierte Sortierregel auf ein WPF DataGrid anwenden?
Ich schrieb eine IComparer<T>
, die sicherstellt, dass Leerzeichen immer nach unten sortiert werden, aber ich kann nicht herausfinden, wie man es auf die Spalten meiner DataGrid
anwenden. Beachten Sie, dass die erste Art der DataGrid
, die ich mit der Methode LINQ OrderBy()
mache, funktioniert super. Das Problem besteht darin, dass alle nachfolgenden Sortierungen, die vom Benutzer ausgeführt werden, die Leerzeichen nach oben sortieren.
Comparer-Code
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);
}
}
Fragen
Wie erhalte ich die DataGridColumn
meinen Vergleich zu bedienen? Oder wenn dies nicht möglich ist, können Sie einen Workaround anbieten? Ich hoffe wenn möglich auf eine MVVM-freundliche Lösung.
Nur eine Notiz, die in Abhängigkeit von der Art der Sammlung Ihres Datagrid gebunden war, müssen Sie möglicherweise das Ergebnis von GetDefaultView auf [eine andere Art] gegossen (http://msdn.microsoft.com/ de-de/library/ms752347.aspx # how_to_create_a_view). – xr280xr