解决方案 »

  1.   


     <dxc:ChartControl Name="chartControl1">
                <dxc:ChartControl.Diagram>
                    <dxc:XYDiagram2D DataContext="{Binding Test.Data}">
                        <dxc:XYDiagram2D.Series>
                            <dxc:BarSideBySideSeries2D DisplayName="First Series" DataContext="{Binding Test.Data}" BarWidth="0.5">
                                <dxc:BarSideBySideSeries2D.Points>
                                    <dxc:SeriesPoint Argument="A" Value="1" />
                                    <dxc:SeriesPoint Argument="B" Value="2" />
                                    <dxc:SeriesPoint Argument="C" Value="3" />
                                    <dxc:SeriesPoint Argument="D" Value="4" />
                                </dxc:BarSideBySideSeries2D.Points>
                            </dxc:BarSideBySideSeries2D>                    </dxc:XYDiagram2D.Series>
                    </dxc:XYDiagram2D>
                </dxc:ChartControl.Diagram>
                <dxc:ChartControl.Legend>
                    <dxc:Legend />
                </dxc:ChartControl.Legend>
            </dxc:ChartControl>我现在只能写到这儿,至于它每一个柱状图的SeriesPoint 怎么去绑定我Test.Data中的键值对就不会了……其中Test是我自定义的一个测试类,里面只有一个Data属性,也就是我要绑定的数据源,是个IDictionary<string, int>类型的属性
      

  2.   

    它的Demo都是写死的数据啊,不是一个数据对象……
      

  3.   

    给你看看另一个报表工具赋值数据源的方法,希望能对你参考价值。
     public void CreateChart(RenderAs renderType)
            {
                string chartTitle = "";
                string axisYTtitle = "";
                string legendTtitle = "";
                if (currentTrace.TraceType == CommonSignatureEventsBLM.BinaryTraceTypes.Torque)
                {
                    chartTitle = String.Format("输出编号:{0} - 类型:扭矩/时间 - 输出点数:{1}", currentTrace.TraceNumber.ToString(), currentTrace.TracePoints.Length.ToString());
                    axisYTtitle = "Nm";
                    legendTtitle = "扭矩/时间曲线";
                }
                else if (currentTrace.TraceType == CommonSignatureEventsBLM.BinaryTraceTypes.Angle)
                {
                    chartTitle = String.Format("输出编号:{0} - 类型:角度/时间 - 输出点数:{1}", currentTrace.TraceNumber.ToString(), currentTrace.TracePoints.Length.ToString());
                    axisYTtitle = "Deg.(°)";
                    legendTtitle = "角度/时间曲线";
                }            Chart chart = new Chart();
                chart.AnimationEnabled = false;
                chart.BorderThickness = new Thickness(1, 0, 0, 1);
                setBackgroundBrush(chart); //设置背景颜色
                
                chart.ScrollingEnabled = false;
                chart.View3D = false;
                 
                Title title = new Title();
                title.Text = chartTitle; 
                chart.Titles.Add(title);  
                 
                Axis charAxisX = new Axis();
                Axis charAxisY = new Axis(); 
                 
                charAxisX.Title = "ms"; 
                chart.AxesX.Add(charAxisX);//为图表添加一个AxesX            charAxisY.Title = axisYTtitle;
                charAxisY.AxisMinimum = (int)getMinY(currentTrace.TracePoints);
                addGridLine(charAxisX);
                chart.AxesY.Add(charAxisY);//我图表添加一个AxesY
                             DataSeries dataSeries = new DataSeries();            dataSeries.ToolTipText = "";
                dataSeries.LegendText = legendTtitle;
                dataSeries.RenderAs = renderType; //Column  
                dataSeries.XValueType = ChartValueTypes.Numeric; 
                 
                DataPoint dataPoint;            for (int i = 0; i < currentTrace.TracePoints.Length; i++)
                { 
                    dataPoint = new DataPoint();
                    dataPoint.XValue = currentTrace.TracePoints[i].X;
                    dataPoint.YValue = currentTrace.TracePoints[i].Y;  
                    dataSeries.DataPoints.Add(dataPoint);
                }             //增加一个图   
                chart.Series.Add(dataSeries); 
                
                //最终获得的扭矩值              chart.Series.Add(addPoint()); //添加坐标点所在的线   
                grid_main.Children.Add(chart);
                 
            }
      

  4.   

    又给你扒拉出一个文章,以后dev的问题都可以去它网站上,看https://www.devexpress.com/Support/Center/Example/Details/E1060
      

  5.   

    https://www.devexpress.com/Support/Center/Search/List/1
      

  6.   

    只从界面上绑定,lz应该先去看看DataContext,Binding,ObservableCollection,INotifyPropertyChanged等
      

  7.   

    对了,还有ItemsSource试过了,没头绪……
      

  8.   

    现在可以通过指定数据源的方式进行绑定了,后台代码是: #region 创建测试用的数据源
                DataTable newdtb = new DataTable();
                newdtb.Columns.Add("Id", typeof(int));
                newdtb.Columns.Add("ProName", typeof(string));
                newdtb.Columns.Add("ProPrice", typeof(decimal));
                newdtb.Columns.Add("Trade_Date", typeof(string));
                newdtb.Columns["Id"].AutoIncrement = true;            //表记录
                Random ran = new Random();
                for (int i = 1; i < 10; i++)
                {                int RandKey = ran.Next(10, 9999);//10~9999之间的数
                    decimal dBase = Convert.ToDecimal(ran.NextDouble());//0~1之间的任意数
                    DataRow newRow = newdtb.NewRow();
                    newRow["Trade_Date"] = i.ToString() + "月";
                    newRow["ProPrice"] = Convert.ToDecimal((RandKey * dBase).ToString("0.0#"));
                    newdtb.Rows.Add(newRow);
                }
                #endregion            //指定Chart控件的DataSource数据源
                chartControl1.DataSource = newdtb.DefaultView;
    然后在界面上直接绑定需要显示的值就可以了,指定每个柱子的ArgumentDataMember,即X轴,还有ValueDataMember,即Y轴,还有就是SeriesDataMember,即柱状图左边的注释部分:<dxc:ChartControl Name="chartControl1">
                <dxc:ChartControl.Diagram>
                    <dxc:XYDiagram2D SeriesDataMember="Trade_Date">
                        <dxc:XYDiagram2D.SeriesTemplate>
                            <dxc:BarSideBySideSeries2D ArgumentDataMember="Trade_Date" ValueDataMember="ProPrice" />
                        </dxc:XYDiagram2D.SeriesTemplate>
                        <dxc:XYDiagram2D.AxisX>
                            <dxc:AxisX2D>
                            </dxc:AxisX2D>
                        </dxc:XYDiagram2D.AxisX>
                    </dxc:XYDiagram2D>
                </dxc:ChartControl.Diagram>
                <dxc:ChartControl.Legend>
                    <dxc:Legend />
                </dxc:ChartControl.Legend>
            </dxc:ChartControl>