/// <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; }