Quiero mostrar una lista de personas en un DataGridView
en una aplicación de Windows Forms. Quiero que mi capa de servicio devuelva una lista de objetos Persona (por ejemplo, IList<Person>
). Quiero que los cambios en la lista se reflejen en el DataGridView
y viceversa. Mi entendimiento es que usar el BindingSource
facilita el trabajo con DataGridView
. Mi pregunta es para el enlace de datos bidireccional para trabajar, necesito:¿Necesito un BindingSource AND a BindingList para WinForms DataBinding?
//pseudo code
BindingSource.DataSource = IBindingList<Person>
o puede hacer:
BindingSource.DataSource = IList<Person>
Cuál es la diferencia? Si mi make realiza cambios en la lista, ¿se actualizará el DataGridView
de cualquier manera? Y si tengo que usar el BindingList
, parece un poco inestable (debido a la creación de una dependencia) devolver un BindingList
desde mi capa de servicio, ¿hay alguna forma de evitarlo?
Microsoft dice de la BindingList
(en la sección Comentarios) http://msdn.microsoft.com/en-us/library/ms132679.aspx:
"Sin embargo, las soluciones típicas programador utilizar una clase que proporciona funcionalidad de enlace de datos, como
BindingSource
, en lugar de directamente usandoBindingList<T>
. "
Parte de mi confusión fue que algunas personas parecían sugerir que no necesitabas utilizar una BindingList para obtener una unión de datos bidireccional siempre que estuvieras utilizando un BindingSource. Pero supongo que lo que dices es que eso solo es cierto si solo modificas la lista a través de BindingSource. – User