WPF DevExpress控件绑定数据源 devexpresswpf数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <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>类型的属性 它的Demo都是写死的数据啊,不是一个数据对象…… 给你看看另一个报表工具赋值数据源的方法,希望能对你参考价值。 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); } 又给你扒拉出一个文章,以后dev的问题都可以去它网站上,看https://www.devexpress.com/Support/Center/Example/Details/E1060 https://www.devexpress.com/Support/Center/Search/List/1 只从界面上绑定,lz应该先去看看DataContext,Binding,ObservableCollection,INotifyPropertyChanged等 对了,还有ItemsSource试过了,没头绪…… 现在可以通过指定数据源的方式进行绑定了,后台代码是: #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> 发邮件 360 病毒 c#日志记录操作 求书---WPF编程宝典:使用C# 2008和.NET 3.5(第2版) c# rsa加密报错:该项不适于在指定状态下使用。 100分求教:请问有没有办法让.NET不自动排版 图像的渐变问题 迎接Client/Server模式的回归 求一次循环既查找出复行的最优算法! ---------------------- 急 散分 需要现打开一个串口即开始每隔5秒向串口发送数据! EXCEL导入超过26行就取不到数了 C#中System.IO.DirectoryNotFoundException找不到路径
<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>类型的属性
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);
}
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>