private void LinkToSource(CursorCoordinateGraph source, Orientation orientation) { switch (orientation) { case Orientation.Horizontal: if (_linkedHorizontalSource != null) { _linkedHorizontalSource.VisibilityChanged -= UpdateVisibility; _linkedHorizontalSource.PositionChanged -= UpdateUIRepresentation; } _linkedHorizontalSource = source; if (_linkedHorizontalSource != null) { _linkedHorizontalSource.VisibilityChanged += UpdateVisibility; _linkedHorizontalSource.PositionChanged += UpdateUIRepresentation; } break; case Orientation.Vertical: if (_linkedVerticalSource != null) { _linkedVerticalSource.VisibilityChanged -= UpdateVisibility; _linkedVerticalSource.PositionChanged -= UpdateUIRepresentation; } _linkedVerticalSource = source; if (_linkedVerticalSource != null) { _linkedVerticalSource.VisibilityChanged += UpdateVisibility; _linkedVerticalSource.PositionChanged += UpdateUIRepresentation; } break; } }
private static void OnPositionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { CursorCoordinateGraph graph = (CursorCoordinateGraph)d; graph.UpdateUIRepresentation(); graph.PositionChanged?.Invoke(graph, EventArgs.Empty); }
private static void UpdateUIRepresentation(DependencyObject d, DependencyPropertyChangedEventArgs e) { CursorCoordinateGraph graph = (CursorCoordinateGraph)d; if ((bool)e.NewValue) { graph.UpdateUIRepresentation(); } else { graph.vertLine.ClearValue(Line.StrokeDashOffsetProperty); graph.horizLine.ClearValue(Line.StrokeDashOffsetProperty); } }