WPF - Использование настраиваемого компаратора при сортировке по нескольким столбцам

У меня есть ListView (GridView), который я хочу отсортировать по 2 столбцам, поэтому, если 2+ элемента имеют одинаковое значение в столбце 1, сортировка выполняется по столбцу 2. Довольно просто. Но пустые строки отображаются вверху при сортировке по AZ. Я хочу переместить их в самый низ. Я сделал компаратор (IComparer), который позаботился об этом, но я не уверен, как его использовать.

Вот код, который я пробовал:

 Dim view As ListCollectionView = CollectionViewSource.GetDefaultView(myCollection)
 Using view.DeferRefresh
    view.SortDescriptions.Clear()
    view.SortDescriptions.Add(New SortDescription(sortHeader.Header, direction))
    view.SortDescriptions.Add(New SortDescription(otherColumn, direction))
    view.CustomSort = New MyComparer()
 End Using

Проблема в том, что моему компаратору вместо значение свойства / столбца, по которому выполняется сортировка. Итак, если класс Foo, и я сортирую по Foo. Bar, я получаю весь класс Foo, а не только значение Bar (на самом деле это все, о чем он должен беспокоиться, поскольку это то, по чему он выполняет сортировку).

Как мой компаратор узнает, какое свойство сравнивать? Может, я здесь что-то не так делаю, потому что в этом нет никакого смысла. Я ожидал получить String (тип свойства) для x и y ...

Кто-нибудь знает, как это сделать?

6
задан grant 7 April 2011 в 22:20
поделиться