new static void IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e) { Selector selector = sender as Selector; bool enabled = (bool)e.NewValue; if (selector != null) { DependencyPropertyDescriptor itemsSourceProperty = DependencyPropertyDescriptor.FromProperty(Selector.ItemsSourceProperty, typeof(Selector)); IMultiSelectCollectionView collectionView = selector.ItemsSource as IMultiSelectCollectionView; if (enabled) { if (collectionView != null) { collectionView.AddControl(selector, GetMaxNumSelectedItem(selector)); } itemsSourceProperty.AddValueChanged(selector, ItemsSourceChanged); } else { if (collectionView != null) { collectionView.RemoveControl(selector); } itemsSourceProperty.RemoveValueChanged(selector, ItemsSourceChanged); } } }
/// <summary> /// Items the source changed. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> static void ItemsSourceChanged(object sender, EventArgs e) { Selector selector = sender as Selector; if (selector == null) { return; } if (GetIsEnabled(selector)) { IMultiSelectCollectionView oldCollectionView; IMultiSelectCollectionView newCollectionView = selector.ItemsSource as IMultiSelectCollectionView; _collectionViews.TryGetValue(selector, out oldCollectionView); if (oldCollectionView != null) { oldCollectionView.RemoveControl(selector); _collectionViews.Remove(selector); } if (newCollectionView != null) { newCollectionView.AddControl(selector); _collectionViews.Add(selector, newCollectionView); } } }
private static void ItemsSourceChanged(object sender, DependencyPropertyChangedEventArgs e) { Selector selector = sender as Selector; if (GetIsEnabled(selector)) { IMultiSelectCollectionView oldCollectionView = e.OldValue as IMultiSelectCollectionView; IMultiSelectCollectionView newCollectionView = e.NewValue as IMultiSelectCollectionView; oldCollectionView?.RemoveControl(selector); newCollectionView?.AddControl(selector); } }
static void IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e) { Selector selector = sender as Selector; IMultiSelectCollectionView collectionView = selector.ItemsSource as IMultiSelectCollectionView; if (selector != null && collectionView != null) { if ((bool)e.NewValue) { collectionView.AddControl(selector); } else { collectionView.RemoveControl(selector); } } }
private static void OnItemsSourceChanged(object sender, DependencyPropertyChangedEventArgs e) { var selector = sender as Selector; selector.ItemsSource = e.NewValue; if (GetIsEnabled(selector)) { IMultiSelectCollectionView oldCollectionView = TryGetMultiSelectCollectionView(e.OldValue); IMultiSelectCollectionView newCollectionView = TryGetMultiSelectCollectionView(e.NewValue); if (oldCollectionView != null) { oldCollectionView.RemoveControl(selector); } if (newCollectionView != null) { newCollectionView.AddControl(selector); } } }
private static IMultiSelectCollectionView TryGetMultiSelectCollectionView(object obj) { IMultiSelectCollectionView collectionView = obj as IMultiSelectCollectionView; return(collectionView); }