예제 #1
0
        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
                });
            }
        }
예제 #2
0
        /// <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;
        }
예제 #4
0
        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;
 }
예제 #6
0
 public AxisSeparatorElement(SeparatorElementCore model)
 {
     _model = model;
 }
예제 #7
0
        /// <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;
        }