protected override void AttachCore(PointSelector selector, Plotter plotter) { if (selector == null) { throw new ArgumentNullException("selector"); } if (plotter == null) { throw new ArgumentNullException("plotter"); } this.selector = selector; this.plotter = (Plotter2D)plotter; leftButtonClickWrapper = new MouseClickWrapper(plotter.CentralGrid, MouseButton.Left); leftButtonClickWrapper.Click += new MouseButtonEventHandler(OnLeftButtonClick); }
protected override void AttachCore(PointSelector selector, Plotter plotter) { if (selector == null) { throw new ArgumentNullException("selector"); } if (plotter == null) { throw new ArgumentNullException("plotter"); } this.selector = selector; this.plotter = (Plotter2D)plotter; foreach (FrameworkElement element in selector.MarkerChart.Items) { element.Cursor = Cursors.No; element.MouseLeftButtonUp += element_MouseLeftButtonUp; } }
protected override void AttachCore(PointSelector selector, Plotter plotter) { if (selector == null) { throw new ArgumentNullException("selector"); } if (plotter == null) { throw new ArgumentNullException("plotter"); } this.selector = selector; this.plotter = (Plotter2D)plotter; var transform = this.plotter.Transform; // copying all markers from marker chart to InkCanvas to enable their selection foreach (FrameworkElement marker in selector.MarkerChart.Items) { var xamlString = XamlWriter.Save(marker); var markerCopy = (FrameworkElement)XamlReader.Parse(xamlString); var x = ViewportPanel.GetX(marker); var y = ViewportPanel.GetY(marker); Point position = new Point(x, y); var positionInScreen = position.ViewportToScreen(transform); if (!marker.IsMeasureValid) { marker.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); } InkCanvas.SetLeft(markerCopy, positionInScreen.X - marker.Width / 2); InkCanvas.SetTop(markerCopy, positionInScreen.Y - marker.Height / 2); markerCopy.DataContext = marker.DataContext; inkCanvas.Children.Add(markerCopy); } plotter.CentralGrid.Children.Add(inkCanvas); }
private static void OnModeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { PointSelector owner = (PointSelector)d; owner.UpdateModeHandler(); }