/// <summary> /// SeriesModel.Load is used to set the properties of an existing Series object in a FlexChart based control. /// The values used are those stored in an existing SeriesModel class object that is typically created and set by /// a standard serializer during deserialization. /// </summary> /// <param name="ser">Specifies an existing instance of a ISeries class object.</param> /// <param name="sm">Specifies an existing instannce of a SeriesModel class object created by a /// a standard serializer during deserialization.</param> public static void Load(ISeries ser, SeriesModel sm) { // simple properties ser.ChartType = sm.ChartType; ser.Name = sm.Name; ser.SymbolMarker = sm.SymbolMarker; ser.SymbolSize = sm.SymbolSize; ser.Visibility = sm.Visiblity; // data var ds = new List <object>(); var len = sm.Y != null ? sm.Y.Length : 0; for (var i = 0; i < len; i++) { object o; if (sm.X != null) { o = new { X = sm.X[i], Y = sm.Y[i] }; } else { o = new { Y = sm.Y[i] }; } ds.Add(o); } ser.BindingX = sm.X != null ? "X" : null; ser.Binding = "Y"; ser.DataSource = ds; // styles ser.SetStyle(StyleSerializer.StyleFromString(sm.Style), null); }
/// <summary> /// ChartModel.Load is used to set the properties of an existing FlexChart object in a FlexChart based control. /// The values used are those stored in an existing ChartModel class object that is typically created and set by /// a standard serializer during deserialization. /// </summary> /// <param name="chart">Specifies an existing instance of a FlexChart class object.</param> /// <param name="model">Specifies an existing instannce of a ChartModel class object created by a /// a standard serializer during deserialization.</param> public static void Load(FlexChart chart, ChartModel model) { // simple properties chart.ChartType = model.ChartType; #if WINFORMS chart.Header.Content = model.Header; chart.Footer.Content = model.Footer; #endif #if WPF chart.Header = model.Header; chart.Footer = model.Footer; #endif chart.Stacking = model.Stacking; if (model.XItems != null && model.XItems.Count > 0) { chart.BindingX = "X"; List <object> ds = new List <object>(); foreach (string s in model.XItems) { ds.Add(new { X = s }); } #if WINFORMS chart.DataSource = ds; #endif #if WPF chart.ItemsSource = ds; #endif } // Load Axes before series so they are available. List <Axis> axes = new List <Axis>() { chart.AxisX, chart.AxisY }; for (int iax = 2; iax < model.Axes.Count; iax++) { axes.Add(new Axis()); } for (int iax = 0; iax < model.Axes.Count; iax++) { AxisModel.Load(axes[iax], model.Axes[iax]); } // data var series = chart.Series; series.Clear(); foreach (var sm in model.Series) { var ser = new Series(); series.Add(ser); SeriesModel.Load(ser, sm); if (sm.XAxisIndex > 0 && sm.XAxisIndex < axes.Count) { ser.AxisX = axes[sm.XAxisIndex]; } if (sm.YAxisIndex > 0 && sm.YAxisIndex < axes.Count) { ser.AxisY = axes[sm.YAxisIndex]; } } // styles ((IStyleProvider)chart).SetStyle(StyleSerializer.StyleFromString(model.Style), null); ((IStyleProvider)chart).SetStyle(StyleSerializer.StyleFromString(model.HeaderStyle), "Header"); ((IStyleProvider)chart).SetStyle(StyleSerializer.StyleFromString(model.FooterStyle), "Footer"); ((IStyleProvider)chart).SetStyle(StyleSerializer.StyleFromString(model.HeaderBorderStyle), "HeaderBorder"); ((IStyleProvider)chart).SetStyle(StyleSerializer.StyleFromString(model.FooterBorderStyle), "FooterBorder"); ((IStyleProvider)chart).SetStyle(StyleSerializer.StyleFromString(model.PlotStyle), "Plot"); ((IStyleProvider)chart).SetStyle(StyleSerializer.StyleFromString(model.SelectedStyle), "Selected"); // legend LegendModel.Load(chart, model.Legend); // ChartOptions OptionsModel.Load(chart.Options, model.Options); // DataLabel DataLabelModel.Load(chart.DataLabel, model.DataLabel); }