Pregunta Lista vs BindingList Ventajas / DisAdvantages


¿Alguien puede describir cuál es la diferencia entre los dos para mi proyecto?

Actualmente tengo un List<MyClass> y establezca BindingSource en eso y un DataGridView en BindingSource.

He implementado IEditableObject así que cuando se llama CancelEdit vuelvo mi objeto a lo que era con un Memberwise.Clone()

¿Cambiaré mi Lista a una lista de encuadernación para resolver esto y cuáles son las ventajas de usar una lista de encuadernación?


74
2018-02-11 10:58


origen


Respuestas:


UN List<> es simplemente una matriz de cambio de tamaño automático, de elementos de un tipo determinado, con un par de funciones auxiliares (por ejemplo, ordenar). Son solo los datos, y es probable que los use para ejecutar operaciones en un conjunto de objetos en su modelo.

UN BindingList<> es un envoltorio alrededor de una lista tipificada o una colección, que implementa el IBindingList interfaz. Esta es una de las interfaces estándar que admiten enlaces de datos bidireccionales. Funciona al implementar el ListChanged evento, que se genera cuando agrega, elimina o establece elementos. Los controles vinculados escuchan este evento para saber cuándo actualizar su pantalla.

Cuando configura un DataSource de BindingSource en un List<>, internamente crea un BindingList<> para envolver tu lista Es posible que desee preenvolver su lista con un BindingList<> usted mismo si desea acceder a él fuera de BindingSource, pero de lo contrario es lo mismo. También puedes heredar de BindingList<> para implementar un comportamiento especial al cambiar elementos.

IEditableObject es manejado por BindingSource. Llamará a BeginEdit en cualquier objeto de implementación cuando cambie los datos en cualquier control vinculado. Luego puede llamar a EndEdit / CancelEdit en BindingSource y lo pasará a su objeto. Moverse a una fila diferente llamará también a EndEdit.


105
2018-02-11 11:20



Un BindingList permite el enlace de datos bidireccional mediante el uso de eventos, una Lista no activa eventos cuando su colección cambia.

No creo que solucione tu problema en particular.


11
2018-02-11 11:05