private void NotifyPropertyChanged(String info) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(info)); //CollectionChanged was null commented it off //CollectionChanged(this, new CollectionChangeEventArgs(CollectionChangeAction.Refresh, this.HoleList)); } }Second was that repaint screen was not getting called. You are binding to CurrentHolePattern so:
CurrentHolePattern.PropertyChanged += new PropertyChangedEventHandler(CurrentHolePattern_PropertyChanged);
This looks like it works:public Window1() { HolePatterns = new ObservableCollection<HolePattern>(); HolePatterns.CollectionChanged += new NotifyCollectionChangedEventHandler(HolePatterns_CollectionChanged); CurrentHolePattern = new HolePattern(); CurrentHolePattern.PatternName = "Test Pattern Name"; //-- Set some default values for the UI CurrentHolePattern.BoltCirDia = 12.0; CurrentHolePattern.HoleCount = 6; CurrentHolePattern.StartAngle = 0; HolePatterns.Add(CurrentHolePattern); InitializeComponent(); CurrentHolePattern.PropertyChanged += new PropertyChangedEventHandler(CurrentHolePattern_PropertyChanged); SketchX0 = canvas1.Width / 2; SketchY0 = canvas1.Height / 2; SketchBoltCirRad = canvas1.Width / 2 * .7; CoordinateGrid.ItemsSource = CurrentHolePattern.HoleList; RedrawScreen(); } void CurrentHolePattern_PropertyChanged(object sender, PropertyChangedEventArgs e) { RedrawScreen(); //RepaintScreen(); Repaint doesn't add new holes. }