Ejemplo n.º 1
0
        protected static void OnRangeChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
        {
            Axis2D axis2DLocal  = ((Axis2D)obj);
            Range  desiredRange = (Range)e.NewValue;

            if (Double.IsNegativeInfinity(desiredRange.Min) || Double.IsNaN(desiredRange.Min) ||
                Double.IsPositiveInfinity(desiredRange.Max) || Double.IsNaN(desiredRange.Max))
            {
                axis2DLocal.SetValue(RangeProperty, e.OldValue);
            }
            if (axis2DLocal.AxisType == AxisType.Log)
            {
                if (desiredRange.Min <= 0 || desiredRange.Max <= 0)
                {
                    axis2DLocal.SetValue(RangeProperty, e.OldValue);
                }
            }
            else if (axis2DLocal.AxisType == AxisType.Date)
            {
                if (desiredRange.Min < Axis.minDate || desiredRange.Max >= Axis.maxDate)
                {
                    axis2DLocal.SetValue(RangeProperty, e.OldValue);
                }
            }
            double length = Math.Abs(desiredRange.Length);

            if ((Math.Abs(desiredRange.Min) / length > 1e10) || (Math.Abs(desiredRange.Max) / length > 1e10))
            {
                axis2DLocal.SetValue(RangeProperty, e.OldValue);
            }
            axis2DLocal.DeriveTicks();
            if (axis2DLocal.PlotPanel != null)
            {
                axis2DLocal.PlotPanel.InvalidateMeasure();
            }
        }