数据。和数据源相关的那些事(二)
我们在第一部分数据。和数据源相关的那些事(一)中讨论了数据源是值集合和对象集合的时候,如何使用C1Chart进行数据绑定。
接下来,我们就接着之前的内容,在上个示例的基础上,进行进一步的深入研究。本部分讲述数据源是Ovservable集合的时候,如何进行数据绑定。以及如何动态绑定图表序列。
Observable集合
WPF下有一个特殊的集合类ObservableCollection,它提供了例如添加,删除或整个列表的刷新。如果以这个类作为图表的数据源,我们在数据源里做出的变化,可以直接影响到C1Chart。
步骤:
第一步
我们在页面里添加System.Collections.ObjectModel的namespace,它包含ObservableCollection。同时,也要添加C1.WPF.C1Chart。
C#代码:
using System.Collections.ObjectModel; using C1.WPF.C1Chart;
第二步
声明Point类型的ObservableCollection,
C#代码:
ObservableCollection<Point> points = new ObservableCollection<Point>();
第三步
清除所有的图表数据(如果存在的话),而且填充points集合的点。
C#代码:
//Clear chart data
chart.Data.Children.Clear();
//Create dummy data points.Add(new Point(0, 20)); points.Add(new Point(1, 22)); points.Add(new Point(2, 19)); points.Add(new Point(3, 24)); points.Add(new Point(4, 29)); points.Add(new Point(5, 7)); points.Add(new Point(6, 12)); points.Add(new Point(7, 15));
第四步
创建XYDataSeries并且绑定到这个集合上,然后添加到图表。
C#代码:
//Setup C1Chart data series XYDataSeries ds = new XYDataSeries(); ds.Label = "Series 1"; //Bind data series to collection ds.ItemsSource = points; //Important to set binding when using ItemsSource ds.ValueBinding = new Binding("Y"); ds.XValueBinding = new Binding("X"); //Add data series to chart chart.Data.Children.Add(ds);
如上代码所示,你可以直接的绑定结合点到data series的ItemSource。很重要的,需要定义ValueBinding(Y)和XValueBinding到Point对象的X,Y属性。
如果你所需要的对象不是Point对象,而是自定义的对象,那么你需要绑定data series值到你指定的属性。然后添加data series到chart的Data集合。
通过这种方式,你可以很容易的添加多个data series。
上述代码的示例如下所示:
ChartWPF_BindObservable.zip (908.27 kb)
C1Chart的图表,有很灵活的绑定方式。有可能需求是在图表上动态的绑定一些序列,这些序列的数量有可能是变化的。我们有中文伯克介绍如何在WPF平台下使用C1Chart的SeriesItemsSource快速绑定图表序列。
具体请参考链接中的博客文章:C1Chart的使用:WPF平台下动态绑定图表序列
本部分内容到此结束,如果你对图表的数据绑定依然有兴趣,请接着阅读第三部分的内容。
C1Chart的在线英文产品文档地址:
http://helpcentral.componentone.com/nethelp/c1wpfchart/#!Documents/componentonechartforwpf.htm
如果你对C1Chart感兴趣,请到我们的官网下载最新版本:/developer/componentone-winform/controls/chart
如果你有疑问,可以到GCDN论坛获得技术支持:http://gcdn.grapecity.com.cn/showforum-68.html
《C1Chart for WPF初级教程》系列文章: