DataGridView
(как и большинство прямых привязок на основе списка) может связывать только непосредственные свойства элемента строки. Возможно, вы могли бы создать фасадный объект для этого? то есть класс, который принимает экземпляр и возвращает имя как прямое свойство:
public string Name {
get {return innerObject.Name;}
set {innerObject.Name = value;}
}
// snipped: other properties - Key etc
В качестве альтернативы, вы могли бы проецировать в новый объект? Например, привязки данных работают (по крайней мере, только для чтения) с анонимными типами очень хорошо:
grid.DataSource = originalData.Select(x=>
new {x.Key, Name = x.Field.Name}).ToList();
Наконец, вы можете взломать ComponentModel
, чтобы сгладить модель во время выполнения, но она действительно не стоит этого только для этого.