Пример #1
0
        internal virtual void OnAxisScaleChanged(object sender, EventArgs e)
        {
            Axis axis = sender as Axis;

            this.UpdateSession.BeginUpdates();
            foreach (XYSeries xySeries in this.Series)
            {
                XYSeriesPresenter presenter = (XYSeriesPresenter)xySeries.SeriesPresenter;
                Action            action    = (Action)null;
                if (axis == xySeries.XAxis)
                {
                    action = (Action)(() => presenter.OnXScaleChanged());
                }
                else if (axis == xySeries.YAxis)
                {
                    action = (Action)(() => presenter.OnYScaleChanged());
                }
                if (action != null)
                {
                    if (this.ChartAreaPanel != null && this.ChartAreaPanel.IsDirty)
                    {
                        XYChartArea.SeriesAxisKey key = new XYChartArea.SeriesAxisKey()
                        {
                            Series = (Semantic.Reporting.Windows.Chart.Internal.Series)xySeries,
                            Axis   = axis
                        };
                        if (EnumerableFunctions.FindIndexOf <Tuple <object, Action> >((IEnumerable <Tuple <object, Action> >) this._updateActions, (Func <Tuple <object, Action>, bool>)(t => key.Equals(t.Item1))) == -1)
                        {
                            this._updateActions.Enqueue(new Tuple <object, Action>((object)key, action));
                        }
                    }
                    else
                    {
                        action();
                    }
                }
            }
            this.UpdateSession.EndUpdates();
        }
Пример #2
0
        internal void LoadDataFromVirtualizer(IEnumerable data)
        {
            object firstNewDataObject = (object)null;
            int    num = -1;

            if (!EnumerableFunctions.IsEmpty(data))
            {
                firstNewDataObject = EnumerableFunctions.FastElementAt <object>(data, 0);
                if (firstNewDataObject != null)
                {
                    num = EnumerableFunctions.FindIndexOf <DataPoint>((IEnumerable <DataPoint>) this.DataPoints, (Func <DataPoint, bool>)(item =>
                    {
                        if (item != firstNewDataObject)
                        {
                            return(item.DataContext == firstNewDataObject);
                        }
                        return(true);
                    }));
                }
            }
            if (num < 0)
            {
                this.ItemsSource = data;
            }
            else
            {
                for (; num > 0; --num)
                {
                    this.DataPoints.RemoveAt(0);
                }
                int index = 0;
                foreach (object obj in data)
                {
                    if (index >= 0 && index < this.DataPoints.Count && (this.DataPoints[index] == obj || this.DataPoints[index].DataContext == obj))
                    {
                        ++index;
                    }
                    else
                    {
                        if (index >= 0)
                        {
                            while (index < this.DataPoints.Count)
                            {
                                this.DataPoints.RemoveAt(index);
                            }
                            index = -1;
                        }
                        DataPoint dataPoint = obj as DataPoint;
                        if (dataPoint == null || !this.IsDataPointCompatible(dataPoint))
                        {
                            dataPoint             = this.CreateDataPoint();
                            dataPoint.DataContext = obj;
                            if (this.ItemsBinder != null)
                            {
                                this.ItemsBinder.Bind(dataPoint, dataPoint.DataContext);
                            }
                        }
                        this.DataPoints.Add(dataPoint);
                    }
                }
            }
        }