protected override void OnPoint_PositionChanged(object sender, PositionChangedEventArgs e)
        {
            DraggablePoint marker = (DraggablePoint)sender;

            // adjusting position to fit inside allowed region
            var region   = AllowedRegion;
            var position = e.Position;

            if (position.X < region.XMin)
            {
                position.X = region.XMin;
            }
            if (position.Y < region.YMin)
            {
                position.Y = region.YMin;
            }
            if (position.X > region.XMax)
            {
                position.X = region.XMax;
            }
            if (position.Y > region.YMax)
            {
                position.Y = region.YMax;
            }

            marker.Position    = position;
            marker.DataContext = position;

            var index = DevMarkerChart.GetIndex(marker);

            if (0 <= index && index < Points.Count && !ProtectedPoints.Changing)
            {
                Points[index] = position;
            }
        }
Example #2
0
        protected virtual void OnPoint_PositionChanged(object sender, PositionChangedEventArgs e)
        {
            FrameworkElement marker = (FrameworkElement)sender;
            var index = DevMarkerChart.GetIndex(marker);

            marker.DataContext = e.Position;

            if (0 <= index && index < points.Count && !points.Changing)
            {
                points[index] = e.Position;
            }
        }
        private void element_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            FrameworkElement clickedElement = (FrameworkElement)sender;
            int index = DevMarkerChart.GetIndex(clickedElement);

            if (index >= 0)
            {
                Point point = selector.Points[index];
                selector.Points.RemoveAt(index);
                //plotter.UndoProvider.AddAction(new CollectionRemoveAction<Point>(selector.Points, point, index));
                e.Handled = true;
            }
        }
Example #4
0
        public void TestAddAndRemoveItems()
        {
            ChartPlotter plotter = new ChartPlotter();

            plotter.PerformLoad();

            DevMarkerChart chart = new DevMarkerChart();

            chart.MarkerBuilder = new EllipseMarker();

            plotter.Children.Add(chart);

            ObservableCollection <Point> source = new ObservableCollection <Point>();

            chart.ItemsSource = source;

            const int count = 10;

            // stage 1
            for (int i = 0; i < count; i++)
            {
                source.Add(new Point());
                Assert.AreEqual(source.Count, chart.Items.Count);
            }

            for (int i = count - 1; i >= 0; i--)
            {
                source.RemoveAt(i);
                Assert.AreEqual(source.Count, chart.Items.Count);
            }


            // stage 2
            for (int i = 0; i < count; i++)
            {
                source.Add(new Point());
                Assert.AreEqual(source.Count, chart.Items.Count);
            }

            Random rnd = new Random();

            for (int i = count - 1; i >= 0; i--)
            {
                int index = rnd.Next(0, source.Count - 1);
                source.RemoveAt(index);
                Assert.AreEqual(source.Count, chart.Items.Count);
            }

            // todo check that all items are visible
        }