Мне кажется в BLToolkit.ComponentModel.BindingListImpl.GetItemSortedPosition ошибка. Публикую правильный, на мой взгляд, код.
public int GetItemSortedPosition(int index, object sender)
{
IComparer comparer = GetSortComparer();
if (comparer == null)
return index;
int result = index > 0 ? comparer.Compare(_list[index - 1], sender) : -1;
int nextResult = index < _list.Count - 1 ? comparer.Compare(_list[index + 1], sender) : 1;
if (result > 0 || nextResult < 0)
{
for (int i = 0; i < _list.Count; i++)
{
if (i == index)
continue;
result = comparer.Compare(_list[i], sender);
#region alex
if (result > 0)
return i - 1;
/*if (result > 0)
{
if (index == i - 1)
return index;
return i;
}*/
#endregion
}
return _list.Count - 1;
}
return index;
}