You can implement sorting on the generic BindingList by overriding the SupportsSortingCore and IsSortedCore properties and the ApplySortCore and RemoveSortCore methods.
You can override the SortDirectionCore and SortPropertyCore properties to return the sort direction and property, respectively.