Мой первоначальный вопрос явно не ясен, извините за это.
Проблема не была связана с привязкой данных к DataGridView в целом или с реализацией DataGridViewComboBoxColumn - как уже правильно ответили люди, которые хорошо документированы в Интернете.
Проблема, которую я пытался решить, связана с обновлением свойств, детализирующих отношения.
В моем примере заказов, когда я изменяю значение столбца «Продукт», столбец «Тип продукта» не обновляется - даже если в коде я устанавливаю свойство и запускаю событие NotifyPropertyChanged. (В отладке я иду во все нужные места)
После долгих раздумий я понял, что это даже не сработало, когда я непосредственно установил свойство «Тип продукта» источника данных, а не установил его в установщике «Продукт».
Другая вещь, которая, как мне кажется, вернула меня на правильный путь, заключается в том, что когда я предоставляю имитированный слой доступа к данным, созданный в основной форме, все работает нормально.
Также, когда я копирую IList, созданный nHibernate, в IBindingList - все снова выглядит нормально.
Итак, проблема в том, что я думаю, что потоки и события NotifyPropertyChanged теряются при использовании определенных источников данных, определенным образом (жаль, что я не могу быть более определенным, чем это!)
Я собираюсь продолжать исследовать более эффективные способы решения этой проблемы, чем копирование IList в IBindingList - возможно, мне нужно узнать о распределении потоков.
Редактировать
Я сейчас разработал решение, которое решает проблему и, думаю, я понимаю, что меня смущает - в основном, кажется, что все, кроме привязки данных базового свойства, не очень хорошо подходит для списков, которые не являются производными от BindingList, - как только Я пытался привязать данные к свойствам, которые запускали связанные события NotifyPropertyChanged, все пошло наперекосяк, и мои события потерялись.
Решение для доступа к данным, которое у меня сейчас есть, использует вариант шаблона Rob Conery IRepository , возвращающий мои коллекции для привязки в виде созданного мной пользовательского класса, SortableBindingLazyList, производного от BindingList, реализует сортировку Основные методы, а также сохраняет свой внутренний список как запрос, задерживая материализацию списка.