Проблемы сортировки WPF CollectionViewSource с нулевыми значениями

У меня есть collectionviewsource, источником которого является наблюдаемая коллекция, и я сортирую так;

_viewSource.SortDescriptions.Add(new SortDescription() { PropertyName ="PropertyName", Direction = ListSortDirection.Ascending });

все это отлично работает, пока я не попытаюсь отсортировать по свойству в списке, имеющему нулевое значение. Затем я получаю InvalidOperationException, «Не удалось сравнить два элемента в массиве».

Должен ли я реализовать свой собственный класс IComparer, чтобы обойти нулевую проблему, или я упустил какой-то трюк?

Заранее спасибо..


person Mark D    schedule 17.05.2012    source источник


Ответы (1)


Да, чтобы обрабатывать нулевые значения, вы должны написать свой собственный custom sorter, реализующий IComparer. На всякий случай можно обратиться к этому — пример IComparer.


private class sortYearAscendingHelper : IComparer
{
   int IComparer.Compare(object a, object b)
   {
      car c1=(car)a;
      car c2=(car)b;
      if(c1.year == null && c2.year == null)
         return 0;
      if(c1.year == null && c2.year != null)
         return -1;
      if(c1.year != null && c2.year == null)
         return 1;
      if (c1.year > c2.year)
         return 1;
      if (c1.year < c2.year)
         return -1;
      else
         return 0;
   }
}
person Rohit Vats    schedule 17.05.2012
comment
Мертвая ссылка на Bea Stollnitz (какая потеря!!!), не могли бы вы опубликовать пример или рабочую ссылку? - person Hannish; 24.06.2016
comment
@Ханниш - Спасибо. Я обновил ссылку. Также опубликуйте пример, чтобы избежать проблем с устаревшими ссылками в будущем. Надеюсь, это поможет.!! - person Rohit Vats; 24.06.2016
comment
Спасибо, вы очень любезны. Кстати, ты знаешь, что случилось с блогом Беа? Это здорово, что он исчез... - person Hannish; 25.06.2016