/// <summary> /// Determines whether [is enabled changed] [the specified sender]. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="DependencyPropertyChangedEventArgs"/> instance containing the event data.</param> private static void IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e) { Selector selector = sender as Selector; if (selector == null) { return; } bool enabled = (bool)e.NewValue; DependencyPropertyDescriptor itemsSourceProperty = DependencyPropertyDescriptor.FromProperty(Selector.ItemsSourceProperty, typeof(Selector)); IMultiSelectCollectionView collectionView = selector.ItemsSource as IMultiSelectCollectionView; if (enabled) { if (collectionView != null) { collectionView.SetSelectOnly(SelectOnly); collectionView.AddControl(selector); } itemsSourceProperty.AddValueChanged(selector, ItemsSourceChanged); } else { if (collectionView != null) { collectionView.SetSelectOnly(SelectOnly); collectionView.RemoveControl(selector); } itemsSourceProperty.RemoveValueChanged(selector, ItemsSourceChanged); } }