数据。和数据源相关的那些事(一)
在上一章类型。穿Prada的女王中,我们介绍了C1Chart的类型。如果你仅仅注意到她的外表而忽略本质,她是会生气的。
C1Chart图表是如何展示数据的呢?下面就和我一起来了解图表的核心:数据。
C1Chart可以绑定到任何一个继承了System.Collections.IEnumerable接口的对象(比如XmlDataProvider, DataSet, DataView等)。
通过设置ItemsSource属性,就可以将C1Chart控件绑定到datatable。
下面介绍将数据传递到C1Chart控件的不同的数据绑定方法。
值集合
其中一种传递数据到图表的方法,就是使用ValueSource属性绑定到值集合。
任何支持IEnumerable接口的数字集合都可以设置为data series的数据源。在上一节我们提到了data series类型,不同的data series类都有数据绑定的相应属性。比如,DataSeries类使用ValuesSource属性做数据绑定。
如下面例子所示,绑定的数据源为double类型的数据集合,首先我们需要定义数据源,然后将数据源绑定到C1Chart的DataSeries。
分别用C#代码和XAML代码演示。
XAML代码:
<!--Binding Source--> <x:Array x:Key="array" Type="System:Double"> <System:Double>1</System:Double> <System:Double>4</System:Double> <System:Double>9</System:Double> <System:Double>16</System:Double> </x:Array> <!--Binding Target --> <c1:C1Chart Name="chart" ChartType="Column" > <c1:C1Chart.Data> <c1:ChartData> <c1:DataSeries Label="s1" ValuesSource="{Binding Source={StaticResource array}}"/> </c1:ChartData> </c1:C1Chart.Data> <c1:Legend></c1:Legend> </c1:C1Chart>
如果不使用数据绑定,也可以用Values属性很容易的实现,只要将值之间用空格分开,具体的代码如下:
<c1:DataSeries Values="1 2 9 16"/>
这样的一句代码就可以替换之前的设置数据源以及数据绑定的操作。
另外在cs文件里也可以很容易的实现绑定。
C#代码:
// Clear previous data chart.Data.Children.Clear(); double[] values = { 1, 4, 9, 16 }; // Create column series chart.Data.Children.Add(new DataSeries() { ValuesSource = values });
以上代码的具体示例可以参考如下Demo。
C1Chart_WPF_BindingValue.zip (1.04 mb)
对象集合
如果你有一个对象集合包含数字属性,就可以使用数据绑定。这个时候涉及到至少两个属性:
ItemsSource属性:分配对象的集合。
ValueBinding属性:获取或设置图表data series的值绑定。指定对象属性提供数据值。
我们假定有一个序列点集,然后图表展示它的数据。
那么XAML代码和C#代码分别如下所示:
XAML代码:
<x:Array x:Key="points" Type="Point"> <Point>0,0</Point> <Point>10,0</Point> <Point>10,10</Point> <Point>0,10</Point> <Point>5,5</Point> </x:Array> </Window.Resources> <!--Binding Target --> <c1:C1Chart Name="chart" ChartType="Column" > <c1:C1Chart.Data> <c1:ChartData ItemsSource="{Binding Source={StaticResource points}}"> <c1:DataSeries Label="s1" ValueBinding="{Binding Path=X}"/> <c1:DataSeries Label="s2" ValueBinding="{Binding Path=Y}"/> </c1:ChartData> </c1:C1Chart.Data> </c1:C1Chart>
如果使用将上述代码在cs文件里描述,可以使用下面代码来替换:
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)); //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);
上述代码的示例如下所示:
ChartWPF_BindObject.zip (907.91 kb)
在这个示例中,我们创建了2个data series,并且一个绑定到鼠标的X,另一个绑定到鼠标的Y。
而在本章的第二部分,我们就在此基础上,进一步的讲述使用1个dataseries绑定鼠标的x,y点,注意是使用XYDataSeries处理数据值。而且会提供动态绑定图表序列的方法。
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初级教程》系列文章: