public override void RenderSeparator(SeparatorElementCore model, ChartCore chart) { base.RenderSeparator(model, chart); // Review whetehr hould we not implement this with a trigger instead of resetting property bindings var element = (AxisSeparatorElement)model.View; if (((DateSeparatorElementCore)model).IsHeader) { element.TextBlock.SetBinding(TextBlock.FontWeightProperty, new Binding { Path = new PropertyPath(HeaderFontWeightProperty), Source = this }); element.TextBlock.SetBinding(TextBlock.ForegroundProperty, new Binding { Path = new PropertyPath(HeaderForegroundProperty), Source = this }); } else { element.TextBlock.SetBinding(TextBlock.FontWeightProperty, new Binding { Path = new PropertyPath(FontWeightProperty), Source = this }); element.TextBlock.SetBinding(TextBlock.ForegroundProperty, new Binding { Path = new PropertyPath(ForegroundProperty), Source = this }); } }
/// <summary> /// Renders the separator. /// </summary> /// <param name="model">The model.</param> /// <param name="chart">The chart.</param> public virtual void RenderSeparator(SeparatorElementCore model, ChartCore chart) { AxisSeparatorElement ase; if (model.View == null) { ase = new AxisSeparatorElement(model) { Line = BindALine(), TextBlock = BindATextBlock() }; model.View = ase; chart.View.AddToView(ase.Line); chart.View.AddToView(ase.TextBlock); Panel.SetZIndex(ase.Line, -1); } else { ase = (AxisSeparatorElement)model.View; } ase.Line.Visibility = !Separator.IsEnabled ? Visibility.Collapsed : Visibility.Visible; ase.TextBlock.Visibility = !ShowLabels ? Visibility.Collapsed : Visibility.Visible; }
// Private methods private void DrawSeparator(double i, double tolerance, CoreMargin currentMargin, Func <double, string> f, AxisOrientation source) { if (i < BotLimit) { return; } SeparatorElementCore asc; var key = Math.Round(i / tolerance) * tolerance; if (!Cache.TryGetValue(key, out asc)) { asc = new SeparatorElementCore { IsNew = true }; Cache[key] = asc; } else { asc.IsNew = false; } View.RenderSeparator(asc, Chart); asc.Key = key; asc.Value = i; asc.GarbageCollectorIndex = GarbageCollectorIndex; var labelsMargin = asc.View.UpdateLabel(f(i), this, source); currentMargin.Width = labelsMargin.TakenWidth > currentMargin.Width ? labelsMargin.TakenWidth : currentMargin.Width; currentMargin.Height = labelsMargin.TakenHeight > currentMargin.Height ? labelsMargin.TakenHeight : currentMargin.Height; currentMargin.Left = labelsMargin.Left > currentMargin.Left ? labelsMargin.Left : currentMargin.Left; currentMargin.Right = labelsMargin.Right > currentMargin.Right ? labelsMargin.Right : currentMargin.Right; currentMargin.Top = labelsMargin.Top > currentMargin.Top ? labelsMargin.Top : currentMargin.Top; currentMargin.Bottom = labelsMargin.Bottom > currentMargin.Bottom ? labelsMargin.Bottom : currentMargin.Bottom; if (LastAxisMax == null) { asc.State = SeparationState.InitialAdd; return; } asc.State = SeparationState.Keep; }
public void RenderSeparator(SeparatorElementCore model, ChartCore chart) { AxisSeparatorElement ase; if (model.View == null) { ase = new AxisSeparatorElement(model) { Line = BindALine(), TextBlock = BindATextBlock() }; if (RenderTransform != null) { ase.TextBlock.SetBinding(RenderTransformProperty, new Binding { Path = new PropertyPath(LabelsRotateTransformProperty), Source = this }); } model.View = ase; chart.View.AddToView(ase.Line); chart.View.AddToView(ase.TextBlock); Panel.SetZIndex(ase.Line, -1); } else { ase = (AxisSeparatorElement)model.View; } if (!Separator.IsEnabled) { ase.Line.Visibility = Visibility.Collapsed; } if (!ShowLabels) { ase.TextBlock.Visibility = Visibility.Collapsed; } }
/// <summary> /// Initializes a new instance of the <see cref="AxisSeparatorElement"/> class. /// </summary> /// <param name="model">The model.</param> public AxisSeparatorElement(SeparatorElementCore model) { _model = model; }
public AxisSeparatorElement(SeparatorElementCore model) { _model = model; }
/// <summary> /// Renders the separator. /// </summary> /// <param name="model">The model.</param> /// <param name="chart">The chart.</param> public void RenderSeparator(SeparatorElementCore model, ChartCore chart) { AxisSeparatorElement ase; if (model.View == null) { ase = new AxisSeparatorElement(model) { Line = BindALine(), TextBlock = BindATextBlock() }; model.View = ase; chart.View.AddToView(ase.Line); chart.View.AddToView(ase.TextBlock); Canvas.SetZIndex(ase.Line, -1); } else { ase = (AxisSeparatorElement) model.View; } if (!Separator.IsEnabled) ase.Line.Visibility = Visibility.Collapsed; if (!ShowLabels) ase.TextBlock.Visibility = Visibility.Collapsed; }