void OnItemsSourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs args) { ItemPoints.Clear(); Points.Clear(); foreach (object item in ItemsSource) { ItemPoints.Add(new ItemPoint(item)); Points.Add(new Point()); } // Also check for INotifyPropertyChanged if (args.OldItems != null) { foreach (object item in args.OldItems) { if (item is INotifyPropertyChanged) { (item as INotifyPropertyChanged).PropertyChanged -= OnItemPropertyChanged; } } } if (args.NewItems != null) { foreach (object item in args.NewItems) { if (item is INotifyPropertyChanged) { (item as INotifyPropertyChanged).PropertyChanged += OnItemPropertyChanged; } } } CalculateAxisScalers(); }
void OnItemsSourceChanged(DependencyPropertyChangedEventArgs args) { // Transfer new collection of items in ItemsSource to ItemPoints ItemPoints.Clear(); Points.Clear(); if (args.NewValue != null) { foreach (object item in ItemsSource) { ItemPoints.Add(new ItemPoint(item)); Points.Add(new Point()); } } // Install (or remove) handlers for CollectionChanged event if (args.OldValue is INotifyCollectionChanged) { (args.OldValue as INotifyCollectionChanged).CollectionChanged -= OnItemsSourceCollectionChanged; } if (args.NewValue is INotifyCollectionChanged) { (args.NewValue as INotifyCollectionChanged).CollectionChanged += OnItemsSourceCollectionChanged; } CalculateAxisScalers(); }