Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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
        }