private void Insert(int index, double distance, double percent) { #region Validate if (index < 0 || index > _entries.Count) { throw new ArgumentException("Insert index is out of range"); } if (distance < 0) { throw new ArgumentException("Distance can't be negative"); } #endregion // Create the row SliderShowValues distanceCtrl = new SliderShowValues() { Minimum = 0, Maximum = Math.Max(10, distance * 4), Value = distance, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, }; SliderShowValues percentCtrl = new SliderShowValues() { Minimum = Math.Min(0, percent), Maximum = Math.Max(1, percent), Value = percent, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, }; StopEntry entry = new StopEntry(distanceCtrl, percentCtrl); _entries.Insert(index, entry); // Add to grid Grid.SetColumn(entry.Distance, 0); Grid.SetColumn(entry.Percent, 2); if (grdStops.RowDefinitions.Count - 1 == index) { grdStops.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); } grdStops.Children.Add(entry.Distance); grdStops.Children.Add(entry.Percent); SyncGridRowIndices(); entry.ValueChanged += new EventHandler(Entry_ValueChanged); txtInsertIndex.Text = _entries.Count.ToString(); }
public StopEntry(SliderShowValues distance, SliderShowValues percent) { this.Distance = distance; this.Percent = percent; distance.ValueChanged += new EventHandler(Slider_ValueChanged); percent.ValueChanged += new EventHandler(Slider_ValueChanged); }