2009-06-08 11 views

risposta

9

Avanti, INotifyPropertyChanged è la norma e ha un supporto molto migliore in WPF. Mi sembra di ricordare che BindingList<T> rispetta solo INotifyPropertyChanged (vedi HookPropertyChanged e UnhookPropertyChanged nel riflettore).

Questo è anche più efficiente, in quanto l'interfaccia utente richiede solo un hook di eventi, anziché uno per evento, e la classe può essere più efficiente in quanto richiede un campo per un gestore (anziché uno per proprietà o il guaio di dover andare via EventHandlerList e un set di chiavi statiche)

Il vecchio stile è principalmente una sbornia.

+0

Grazie, ho corretto il nome dell'interfaccia. –

+0

Ma puoi vederti usare questo? Voglio dire, ti aspetti di fare un confronto tra stringhe per capire cosa è cambiato? –

+0

Sì, fondamentalmente. O confrontare con i controlli dell'interfaccia utente che di solito hanno un nome di mapping che è una stringa. –

2

L'implementazione dell'interfaccia INotifyPropertyChanged offre l'ulteriore vantaggio di disporre di fonti di associazione che ascoltano automaticamente le modifiche apportate alle proprietà e aggiornano i controlli.

Provare a fare ciò. Creare una classe senza l'interfaccia INotifyPropertyChanged e collegarla a qualcosa. Ad esempio, è possibile associare una delle sue proprietà alla proprietà Text di un controllo TextBox. Aggiungi un pulsante che cambierà, non il testo del TextBox, ma il valore della rispettiva proprietà nell'istanza associata alla casella. Esegui e fai clic sul pulsante. La casella di testo non verrà notificata della modifica. Se poi imposti la proprietà INotifyPropertyChanged nella classe, chiedi al setter di notificare la sua modifica tramite PropertyChanged, anche dopo aver ripetuto l'esperimento, vedrai l'aggiornamento del TextBox.

Problemi correlati