protected override void RemoveItem(Int32 index) { var args = new BindListEventArgs(index, Items[index]); BeforeRemoveItem?.Invoke(this, args); //?.Invoke invice della parentesi tonda diretta poichè se nessuno ha sottoscritto l'evento non va in eccezione if (args.interrompiOperazione == true) { return; } var PropChangedOggT = new PropertyChangedEventHandler(CambioPropOggT); typeof(T).GetEvent("PropertyChanged").RemoveEventHandler(Items[index], PropChangedOggT); base.RemoveItem(index); AfterRemoveItem?.Invoke(this, args); //?.Invoke invice della parentesi tonda diretta poichè se nessuno ha sottoscritto l'evento non va in eccezione ItemNumberChanged?.Invoke(this, args); }
protected override void InsertItem(Int32 index, T item) { BindListEventArgs args = new BindListEventArgs(index, item); BeforeInsertItem?.Invoke(this, args); //?.Invoke invice della parentesi tonda diretta poichè se nessuno ha sottoscritto l'evento non va in eccezione if (args.interrompiOperazione == true) { return; } base.InsertItem(index, item); AfterInsertItem?.Invoke(this, args); //?.Invoke invice della parentesi tonda diretta poichè se nessuno ha sottoscritto l'evento non va in eccezione ItemNumberChanged?.Invoke(this, args); var PropertyChangedEH = new PropertyChangedEventHandler(CambioPropOggT); //Se il valore di una delle proprietà dei vari oggetti contenuti nella lista cambia, allora intercetto il cambiamento... typeof(T).GetEvent("PropertyChanged").AddEventHandler(item, PropertyChangedEH); //...e richiamo il metodo CambioPropOggT che a sua volta scatena l'evento CambioProprietàOggT }