Beispiel #1
0
        /// <summary>
        /// Funzione di inizializzazione del behavior
        /// </summary>
        private void Init()
        {
            //se l'item source non è nullo
            if (ItemsSource != null)
            {
                //rimuovo ogni elemento dalla lista locale degli elementi gestiti
                for (int i = elements.Count - 1; i >= 0; i--)
                {
                    removeItem(elements[i]);
                }

                //se l'itemsource implementa l' INotifyCollectionChanged
                INotifyCollectionChanged iNot = ItemsSource as INotifyCollectionChanged;
                if (iNot != null)
                {
                    //Mi aggancio all'evento di collection changed per gestire l'aggiunta o la rimozione di elementi
                    iNot.CollectionChanged += Mod_CollectionChanged;
                }

                //splitto il path per recuperare l'eventuale proprietà di raggruppamento
                groupSel = GroupSelector?.Split('.');

                //Per ogni oggetto di tipo ISelectable dell'itemssource
                //aggiunto l'elemento alla lista locale di oggetti da gestire
                foreach (ISelectable item in ItemsSource)
                {
                    addItem(item);
                }

                //mi aggancio all'evento di check della checkbox e all'evento di uncheck della checkbox
                AssociatedObject.Checked   += CheckedHandler;
                AssociatedObject.Unchecked += UncheckedHandler;

                //Resync global selected flag
                ResyncSelectionFlag();
            }

            init = true;
        }