我想在Windows窗体应用程序中的DataGridView
中显示人员列表。我希望我的服务层返回一个Person对象的列表(例如IList<Person>
)。我希望列表中的更改反射(reflect)在DataGridView
中,反之亦然。我的理解是,使用BindingSource
可以简化DataGridView
的使用。我的问题是双向数据绑定(bind)能否正常工作,我需要:
//pseudo code
BindingSource.DataSource = IBindingList<Person>
或者我可以做:
BindingSource.DataSource = IList<Person>
有什么不同?如果我对列表进行更改,是否可以通过两种方式更新
DataGridView
?如果我必须使用BindingList
,从我的服务层返回BindingList
似乎有点不方便(因为创建了依赖项),有没有办法解决?微软谈到了
BindingList
(在“备注”部分中)http://msdn.microsoft.com/en-us/library/ms132679.aspx:
最佳答案
如果使用BindingList<T>
,则通过基础列表进行的更改将反射(reflect)在数据绑定(bind)控件中,因为在列表更改时BindingList会引发一个事件。其他大多数收藏集则没有。
如果您使用普通集合作为数据源,那么通过其他数据绑定(bind)控件(或通过BindingSource)所做的更改仍将反射(reflect)出来,但直接对基础集合的更改不会反射(reflect)出来。
关于c# - WinForms DataBinding是否需要BindingSource和BindingList?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4675874/