public XYLineChartControl(XYLineChartNodeModel model) { InitializeComponent(); model.PropertyChanged += NodeModel_PropertyChanged; BuildUI(model); DataContext = this; }
private void BuildUI(XYLineChartNodeModel model) { // Load sample data if any ports are not connected if (!model.InPorts[0].IsConnected && !model.InPorts[1].IsConnected && !model.InPorts[2].IsConnected && !model.InPorts[3].IsConnected) { var defaultXValues = new double[][] { new double[] { 0, 1, 2, 3 }, new double[] { 0, 1, 2, 3 }, new double[] { 0, 1, 2, 3 } }; var defaultYValues = new double[][] { new double[] { 0, 1, 2, 3 }, new double[] { 1, 2, 3, 4 }, new double[] { 2, 3, 4, 5 } }; LineSeries[] seriesRange = new LineSeries[defaultXValues.Length]; for (var i = 0; i < defaultXValues.Length; i++) { ChartValues <ObservablePoint> points = new ChartValues <ObservablePoint>(); for (int j = 0; j < defaultXValues[i].Length; j++) { points.Add(new ObservablePoint { X = defaultXValues[i][j], Y = defaultYValues[i][j] }); } seriesRange[i] = new LineSeries { Values = points, Fill = Brushes.Transparent }; } XYLineChart.Series.AddRange(seriesRange); } // Else load input data else if (model.InPorts[0].IsConnected && model.InPorts[1].IsConnected && model.InPorts[2].IsConnected && model.InPorts[3].IsConnected) { if (model.Labels.Count == model.XValues.Count && model.XValues.Count == model.YValues.Count && model.Labels.Count > 0) { LineSeries[] seriesRange = new LineSeries[model.Labels.Count]; for (var i = 0; i < model.Labels.Count; i++) { ChartValues <ObservablePoint> points = new ChartValues <ObservablePoint>(); for (int j = 0; j < model.XValues[i].Count; j++) { points.Add(new ObservablePoint { X = model.XValues[i][j], Y = model.YValues[i][j] }); } seriesRange[i] = new LineSeries { Title = model.Labels[i], Values = points, Stroke = model.Colors[i], Fill = Brushes.Transparent }; } XYLineChart.Series.AddRange(seriesRange); } } }