Exemple #1
0
        public void Bind(ChartData <TX, TY> chartData, PopulationAnalysisChart analysisChart)
        {
            if (chartData == null)
            {
                ClearPlot();
                return;
            }

            //Required to add at least one series in order to create the Diagram
            if (_view.Diagram == null)
            {
                var dummySeries = new Series("dummy", _viewType);
                _view.Chart.Series.Add(dummySeries);

                //Zoom initialization should be performed with an existing Diagram
                if (_allowZoom)
                {
                    new DiagramZoomRectangleService(_view.Chart, zoomAction);
                }
            }

            var diagram = _view.Diagram;

            if (diagram == null)
            {
                return;
            }

            //before AddSeries, because Series are assigned to panes
            doUpdateOf(diagram.Panes, () => addPanes(chartData, diagram));

            //before AddSeries, because Series are assigned to Secondary yAxes
            doUpdateOf(diagram.SecondaryAxesY, () => AddYAxes(chartData, diagram));

            doUpdateOf(_view.Chart.Series, () => AddSeries(chartData, diagram));

            // after AddSeries, because Axes are available after curves
            AddXAxes(chartData, diagram);
            doUpdateOf(diagram.Panes, () => SetVisibilityOfXAxisInPanes(chartData, diagram));

            UpdateSettings(analysisChart);

            // annotations must be placed at the end because otherwise they get removed for example when series are added.
            // this is a behavior of dev express.
            doUpdateOf(diagram.Panes, () => addPaneTitles(chartData, diagram));

            _view.Refresh();
        }