如何绑定WinForms';DataGridView到主详细场景中的EF导航属性(集合)?

如何绑定WinForms';DataGridView到主详细场景中的EF导航属性(集合)?,winforms,data-binding,datagridview,entity-framework-6,bindingsource,Winforms,Data Binding,Datagridview,Entity Framework 6,Bindingsource,我在Windows窗体中遇到数据绑定问题 以下是EF模型中与故事相关的部分: namespace Model { class Person { [Key] public int Id { get; set; } public String Name { get; set; } public virtual ICollection<Receipt> Receipts { get; set; }

我在Windows窗体中遇到数据绑定问题

以下是EF模型中与故事相关的部分:

namespace Model
{
    class Person 
    {
        [Key]
        public int Id { get; set; }

        public String Name { get; set; }

        public virtual ICollection<Receipt> Receipts { get; set; }
    }

    class Receipt 
    {
        [Key]
        public int Id { get; set; }

        public DateTime Timestamp { get; set; }
        public double Value { get; set; }

        public int PersonId { get; set; }
        public virtual Person Person { get; set; }
    }
}
Textbox的数据绑定设置为
peopleBindingSource
作为数据源,而
Name
作为属性

当我运行应用程序时,绑定导航器工作正常,在我单击“上一步”和“下一步”按钮时显示不同的人。带有此人姓名的文本框也已正确填充

现在,问题来了:

在同一表单上,有一个DataGridView。我想为当前选中的人员的每个收据显示一行

我已尝试将
dataGridView的数据源
绑定到
peopleBindingSource
Receipts
导航属性

我期望gridview将其数据源更新为相应的收据集合,就像textbox在导航更改时更新其文本属性一样。设置基本相同

问题是,不会抛出错误,网格保持为空(它甚至不会创建列标题)


为什么这个绑定不起作用,并且可以从设计器内部完成?如何正确设置绑定(无需以编程方式处理peopleBindingSource上的更改事件并从peopleBindingSource.Current手动设置网格的数据源)

我找到了这个问题的解决办法


问题是
DataGridView
无法绑定到
ICollection
,因此解决方案是将导航属性更改为
bindingslist
。然后设计师正确地显示了属性

你能把数据源绑定到datagridview的代码发布到哪里吗?我不能,因为我没有在代码中绑定它,而是在设计器中绑定它。然而,我发现了问题所在。
db.People.Include(p => p.Receipts).Load();
peopleBindingSource.DataSource = db.People.Local.ToBindingList();