/// <summary> /// Position PointChartItem /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void OnItemUnitPointChangedEvent(object sender, RoutedEventArgs e) { PointChart pointChart = sender as PointChart; PointChartItem pointChartItem = e.OriginalSource as PointChartItem; pointChart.UpdatePosition(pointChartItem, pointChart.ItemContainerGenerator.IndexFromContainer(pointChartItem)); }
/// <summary> /// Recalc x y in pixel /// </summary> /// <param name="d">PointChartItem</param> /// <param name="e">DependencyPropertyChangedEventArgs</param> private static void PointPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { PointChartItem self = d as PointChartItem; if (!self.internalIsLoaded) { return; } self.RaiseEvent(new RoutedEventArgs(PointChartItem.UnitPointChangedEvent, self)); }
/// <summary> /// Update point chart item position /// </summary> /// <param name="pointChartItem">PointChartItem</param> private void UpdatePosition(PointChartItem pointChartItem, int index) { if (PartDrawingArea == null || !internalIsLoaded) { return; } //Debug.WriteLine("UpdateSingle"); Point newPos = MathHelpers.ConvertUnitToPixelPoint( new Point(pointChartItem.XUnitValue, pointChartItem.YUnitValue), new CommonLibrary.Util.DrawingContext() { DrawingSize = PartDrawingArea.RenderSize, XMaximum = XMaximum, XMinimum = XMinimum, YMaximum = YMaximum, YMinimum = YMinimum }); Canvas.SetLeft(pointChartItem, newPos.X); Canvas.SetTop(pointChartItem, newPos.Y); if (PartLine == null) { return; } if (index < PartLine.Points.Count) { PartLine.Points.RemoveAt(index); } PartLine.Points.Insert(index, newPos); //Debug.WriteLine("Draw"); }