← 返回所有博客文章

数据。和数据源相关的那些事(一)

 

在上一章类型。穿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初级教程》系列文章

初遇。Getting Started(上)

初遇。Getting Started(下)

类型。穿Prada的女王(上)

类型。穿Prada的女王(下)

数据。和数据源相关的那些事(一)

数据。和数据源相关的那些事(二)

数据。和数据源相关的那些事(三)

数据。和数据源相关的那些事(四)

标记和标签。撕名牌大战(一)

标记和标签。撕名牌大战(二)

标记和标签。撕名牌大战(三)

导出(PDF,EXCEL) 

多轴图表 

轴的动态绑定

实现轴注释的高级自定义

颜色和大小。数据点的自定义(一)

符号。数据点的自定义(二)

基础介绍。XAML动画(一)

基础介绍。XAML动画(二)

基础介绍。XAML动画(三)

基础介绍。XAML动画(四)