Есть следующая проблема. Использует UserData в качестве источника данных. В качестве колонок - свои объекты у которых перекрыты методы сравнения Equal и CompareTo. Также перекрыты GetHash() и ToString(). Причем есть такой случай, когда в качестве колонок для связи между Master-Detail DataBand задаются как раз наши объекты. Все работает правильно, кроме одного случая, А именно, когда объекты НЕ равны, но при этом obj.ToString() возвращает одно и то же значение. (Например, если объекты - два разных человека с одинаковой фамилией). При этом, Detail данные подцепляются только к однома Master DataBand, а к другому нет, хотя детальные данные есть для обоих. Стоит поменять одному из объектов значение, возвращаемое ToString() - все становится нормально.
Покопавшись в исходниках, нашел, что неправильный результат приходит из метода
detailRows = table.detailRows[table.Position].GetChildRows(relationName);
При этом, во время выполнения данного метода отлично вызывается перекрытый у нашего объекта метод CompareTo и отрабатывает правильно, возвращая в качестве результата сравнения, что данные не равны.
Подскажите, пожалуйста, где копать!