Condividi tramite


Notifica delle modifiche nel data binding di Windows Form

Uno dei concetti più importanti del data binding di Windows Form è notifica delle modifiche. Per assicurarsi che l'origine dati e i controlli associati dispongano sempre dei dati più recenti, è necessario aggiungere una notifica delle modifiche per l'associazione dati. In particolare, si vuole assicurarsi che i controlli associati vengano informati delle modifiche apportate all'origine dati e che l'origine dati riceve una notifica delle modifiche apportate alle proprietà associate di un controllo.

Esistono diversi tipi di notifica delle modifiche, a seconda del tipo di data binding:

  • Associazione semplice, in cui una singola proprietà di controllo è associata a una singola istanza di un oggetto.

  • Associazione basata su elenco, che può includere una singola proprietà di controllo associata alla proprietà di un elemento in un elenco o una proprietà di controllo associata a un elenco di oggetti.

Inoltre, se si creano controlli Windows Form che si desidera utilizzare per il data binding, è necessario applicare il PropertyNameModello Modificato ai controlli, in modo che le modifiche alla proprietà associata di un controllo vengano propagate all'origine dati.

Notifica delle modifiche per l'associazione semplice

Per un'associazione di dati semplice, gli oggetti business devono fornire una notifica della modifica quando cambia il valore di una proprietà associata. Per fare ciò, è possibile esporre un evento Changed PropertyNameper ogni proprietà dell'oggetto business e associare l'oggetto business ai controlli utilizzando il BindingSource o il metodo preferito in cui l'oggetto business implementa l'interfaccia INotifyPropertyChanged e genera un evento PropertyChanged quando il valore di una proprietà cambia. Per altre informazioni, vedere Procedura: Implementare l'interfaccia INotifyPropertyChanged. Quando si usano oggetti che implementano l'interfaccia INotifyPropertyChanged, non è necessario utilizzare il BindingSource per associare l'oggetto a un controllo, ma è consigliabile usare l'BindingSource.

Notifica delle modifiche per List-Based binding

Windows Forms dipende da un elenco associato per fornire ai controlli associati informazioni sulle modifiche delle proprietà (quando cambia il valore della proprietà di un elemento dell'elenco) e sulle modifiche dell'elenco (quando un elemento viene eliminato o aggiunto all'elenco). Pertanto, gli elenchi usati per il data binding devono implementare il IBindingList, che fornisce entrambi i tipi di notifica delle modifiche. Il BindingList<T> è un'implementazione generica di IBindingList ed è progettata per l'uso con il data binding di Windows Form. È possibile creare un BindingList<T> che contiene un tipo di oggetto business che implementa INotifyPropertyChanged e l'elenco convertirà automaticamente gli eventi PropertyChanged in eventi ListChanged. Se l'elenco associato non è un IBindingList, è necessario associare l'elenco di oggetti ai controlli Windows Form utilizzando il componente BindingSource. Il componente BindingSource fornirà una conversione da proprietà a elenco simile a quella del BindingList<T>. Per altre informazioni, vedere Procedura: Generare notifiche di modifica usando BindingSource e l'interfaccia INotifyPropertyChanged.

Notifica delle modifiche per i controlli personalizzati

Infine, dal lato del controllo è necessario esporre un evento Changed PropertyNameper ogni proprietà progettata per essere collegata ai dati. Le modifiche apportate alla proprietà del controllo vengono quindi propagate all'origine dati associata. Per altre informazioni, vedere Procedura: Applicare il pattern PropertyNameChanged

Vedere anche