/// <summary> /// Renders the stripline. /// </summary> /// <param name="stripRect">The Strip <see cref="Rect"/></param> /// <param name="stripLine">The Strip Line</param> private void RenderStripLine(Rect stripRect, ChartStripLine stripLine) { if (stripRect.IsEmpty) { return; } var border = stripLines.CreateNewInstance(); var control = new ContentControl(); border.SetBinding(Border.BackgroundProperty, ChartCartesianGridLinesPanel.CreateBinding("Background", stripLine)); border.SetBinding(Border.BorderBrushProperty, ChartCartesianGridLinesPanel.CreateBinding("BorderBrush", stripLine)); border.SetBinding(Border.BorderThicknessProperty, ChartCartesianGridLinesPanel.CreateBinding("BorderThickness", stripLine)); border.SetBinding(Border.OpacityProperty, ChartCartesianGridLinesPanel.CreateBinding("Opacity", stripLine)); border.SetBinding(Border.VisibilityProperty, ChartCartesianGridLinesPanel.CreateBinding("Visibility", stripLine)); control.SetBinding(ContentControl.ContentProperty, ChartCartesianGridLinesPanel.CreateBinding("Label", stripLine)); control.SetBinding(ContentControl.ContentTemplateProperty, ChartCartesianGridLinesPanel.CreateBinding("LabelTemplate", stripLine)); control.SetBinding(ContentControl.OpacityProperty, ChartCartesianGridLinesPanel.CreateBinding("Opacity", stripLine)); control.RenderTransformOrigin = new Point(0.5, 0.5); control.RenderTransform = new RotateTransform { Angle = stripLine.LabelAngle }; control.SetBinding(FrameworkElement.HorizontalAlignmentProperty, ChartCartesianGridLinesPanel.CreateBinding("LabelHorizontalAlignment", stripLine)); control.SetBinding(FrameworkElement.VerticalAlignmentProperty, ChartCartesianGridLinesPanel.CreateBinding("LabelVerticalAlignment", stripLine)); border.Child = control; border.Width = stripRect.Width; border.Height = stripRect.Height; Canvas.SetLeft(border, double.IsNaN(stripRect.Left) ? 0 : stripRect.Left); Canvas.SetTop(border, double.IsNaN(stripRect.Top) ? 0 : stripRect.Top); }
/// <summary> /// Adds the Gridlines for the axis. /// </summary> /// <param name="axis">The Axis</param> public void UpdateGridLines(ChartAxis axis) { if (axis == null) { return; } if (axis.GridLinesRecycler == null) { axis.CreateLineRecycler(); } int axesCount = 1; if (axis.RegisteredSeries.Count > 0) { axesCount = axis.Orientation == Orientation.Horizontal ? Area.RowDefinitions.Count > 1 ? axis.AssociatedAxes.Count : (axis.AssociatedAxes.DistinctBy(Area.GetActualRow)).Count() : Area.ColumnDefinitions.Count > 1 ? axis.AssociatedAxes.Count : (axis.AssociatedAxes.DistinctBy(Area.GetActualColumn)).Count(); } int tickCount = axis.SmallTickPoints.Count * axesCount; var categoryAxis = axis as CategoryAxis; if (!(categoryAxis != null && categoryAxis.LabelPlacement == LabelPlacement.BetweenTicks)) { tickCount = axis.VisibleLabels.Count * axesCount; } if (axis.smallTicksRequired) { ChartCartesianGridLinesPanel.UpdateGridlines(axis, axis.MinorGridLinesRecycler, axis.SmallTickPoints.Count * axesCount, false, false); } ChartCartesianGridLinesPanel.UpdateGridlines(axis, axis.GridLinesRecycler, tickCount, true, true); }