示例#1
0
文件: Axis.cs 项目: Uwy/Live-Charts
 /// <summary>
 /// Raises the <see cref="E:PreviewRangeChanged" /> event.
 /// </summary>
 /// <param name="e">The <see cref="PreviewRangeChangedEventArgs"/> instance containing the event data.</param>
 protected void OnPreviewRangeChanged(PreviewRangeChangedEventArgs e)
 {
     PreviewRangeChanged?.Invoke(e);
     if (PreviewRangeChangedCommand != null && PreviewRangeChangedCommand.CanExecute(e))
     {
         PreviewRangeChangedCommand.Execute(e);
     }
 }
示例#2
0
        private void Axis_OnPreviewRangeChanged(PreviewRangeChangedEventArgs e)
        {
            var viewModel = (MainWindowModel)DataContext;

            var percent = viewModel.MaxRange * 0.3;

            if (e.PreviewMinValue < viewModel.MinValueX - percent)
            {
                e.Cancel = true;
            }
            if (e.PreviewMaxValue > viewModel.MaxValueX + percent)
            {
                e.Cancel = true;
            }
        }
        private void Axis_OnPreviewRangeChanged(PreviewRangeChangedEventArgs e)
        {
            if (chartStockPrice.Series == null)
            {
                return;
            }
            //if less than -0.5, cancel
            limitMin = e.PreviewMinValue < AxisMin;

            //if greater than the number of items on our array plus a 0.5 offset, stay on max limit
            limitMax = e.PreviewMaxValue > AxisMax;

            //finally if the axis range is less than 1, cancel the event
            if (e.PreviewMaxValue - e.PreviewMinValue < AxisUnit * 20)
            {
                e.Cancel = true;
            }
        }
示例#4
0
        private void Axis_OnPreviewRangeChanged(PreviewRangeChangedEventArgs e)
        {
            //TODO: Решить проблему c ограничением диапозона на шкале. Он не может быть ограничеен при изменении со скролбара
            return;

            //TODO: Решить проблему, что при потере фокуса панинг работает некорректно
            var viewModel = ExtractViewModel();

            var percent = viewModel.MaxRange * 0.3;

            if (e.PreviewMinValue < viewModel.MinValueX - percent)
            {
                e.Cancel = true;
            }
            if (e.PreviewMaxValue > viewModel.MaxValueX + percent)
            {
                e.Cancel = true;
            }
        }
示例#5
0
        /// <summary>
        ///     Sets the range.
        /// </summary>
        /// <param name="min">The minimum.</param>
        /// <param name="max">The maximum.</param>
        public void SetRange(double min, double max)
        {
            var bMax = double.IsNaN(MaxValue) ? Model.TopLimit : MaxValue;
            var bMin = double.IsNaN(MinValue) ? Model.BotLimit : MinValue;

            var nMax = double.IsNaN(MaxValue) ? Model.TopLimit : MaxValue;
            var nMin = double.IsNaN(MinValue) ? Model.BotLimit : MinValue;

            var e = new RangeChangedEventArgs
            {
                Range            = nMax - nMin,
                RightLimitChange = bMax - nMax,
                LeftLimitChange  = bMin - nMin,
                Axis             = this
            };

            var pe = new PreviewRangeChangedEventArgs(e)
            {
                PreviewMaxValue = max,
                PreviewMinValue = min
            };

            OnPreviewRangeChanged(pe);

            if (pe.Cancel)
            {
                return;
            }

            MaxValue = max;
            MinValue = min;

            Model.Chart.Updater.Run();

            OnRangeChanged(e);
        }
示例#6
0
 private void Axis_OnPreviewRangeChanged(PreviewRangeChangedEventArgs eventargs)
 {
     ((VisualizerViewModel)DataContext)?.OnRangeChanged((long)eventargs.PreviewMinValue, (long)eventargs.PreviewMaxValue);
 }