Notificación de cambios en el enlace de datos de Windows Forms

Uno de los conceptos más importantes del enlace de datos de Windows Forms es la notificación de cambios. Para asegurarse de que el origen de datos y los controles enlazados siempre tienen los datos más recientes, debe agregar una notificación de cambios para el enlace de datos. En concreto, quiere asegurarse de que los controles enlazados reciben una notificación de los cambios realizados en su origen de datos y que el origen de datos recibe una notificación de los cambios realizados en las propiedades enlazadas de un control.

Existen diferentes tipos de notificación de cambios, según el tipo de enlace de datos:

  • Enlace simple, en el que una sola propiedad de control está enlazada a una única instancia de un objeto.

  • Enlace basado en lista, que puede incluir una sola propiedad de control enlazada a la propiedad de un elemento de una lista o una propiedad de control enlazada a una lista de objetos.

Además, si va a crear controles de Windows Forms que quiere usar para el enlace de datos, debe aplicar el patrón NombreDePropiedadChanged a los controles, para que los cambios en la propiedad enlazada de un control se propaguen al origen de datos.

Notificación de cambios para un enlace simple

En el caso de los enlaces simples, los objetos comerciales deben proporcionar una notificación de cambios cuando cambia el valor de una propiedad enlazada. Para ello, exponga un evento NombreDePropiedadChanged para cada propiedad del objeto comercial y enlace el objeto comercial a controles con el método BindingSource o con el método preferido en el que el objeto comercial implemente la interfaz INotifyPropertyChanged y genere un evento PropertyChanged cuando cambie el valor de una propiedad. Para obtener más información, consulte Procedimiento para implementar la interfaz INotifyPropertyChanged. Cuando se usan objetos que implementan la interfaz INotifyPropertyChanged, no es necesario usar BindingSource para enlazar el objeto a un control, pero se recomienda usar BindingSource.

Notificación de cambios para un enlace basado en lista

Windows Forms depende de una lista enlazada para proporcionar información sobre el cambio de una propiedad (cambios en el valor de propiedad de un elemento de lista) y el cambio de una lista (incorporación o eliminación de un elemento de lista) a los controles enlazados. Por lo tanto, las listas usadas para el enlace de datos deben implementar IBindingList, que proporciona ambos tipos de notificación de cambios. BindingList<T> es una implementación genérica de IBindingList y está diseñado para su uso con el enlace de datos de Windows Forms. Puede crear un objeto BindingList<T> que contenga un tipo de objeto comercial que implemente INotifyPropertyChanged y la lista convertirá automáticamente los eventos PropertyChanged en eventos ListChanged. Si la lista enlazada no es un objeto IBindingList, debe enlazar la lista de objetos a controles de Windows Forms mediante el componente BindingSource. El componente BindingSource proporcionará una conversión de propiedad a lista similar a la de BindingList<T>. Para obtener más información, consulte Procedimiento para provocar notificaciones de cambios mediante BindingSource y la interfaz INotifyPropertyChanged.

Notificación de cambios para controles personalizados

Por último, desde el lado del control debe exponer un evento NombreDePropiedadChanged para cada propiedad diseñada para enlazarse a los datos. Después, los cambios en la propiedad de control se propagan al origen de datos enlazado. Para obtener más información, vea Procedimiento para aplicar el patrón PropertyNameChanged.

Consulte también