Studio for WPF:定制 C1WPFChart 标记》详细说明了用PlotElementLoaded事件进行label设置,借用其思想,本文PlotElementLoaded进行C1Chart柱子宽度设置。

在WPF的C1Chart下,默认的柱状图的各个柱子宽度,是动态适配的:即如果有1个柱子,则很粗,有5个柱子则变细了, 这样有一个好处是对开发者而言不用关心太多细节。 但是,有一个问题是1个柱子、5个柱子的Chart切换数据源的时候,UI上变化比较大。

 11

22

故存在这样的需求:”还是没有办法让柱子保持一定的宽度。例如,我想让每个柱子的宽度保持在40个像素,不管数据量的多少“。

首先,采用设置X轴柱子整体边距的办法:

  1: BarColumnOptions.SetSize(c1Chart1, 2.0);

Chart默认的1.0属性,尝试修改为0.5、1.5、2.0后,依然无法达到要的效果。

其次,想到了以前用过的PlotElementLoaded事件,在WPF UI发生变化后, Chart的序列、标签等会自动触发这个事件,我们可以在这个事件里面进行宽度等的修改。

关键代码如下:

  1:         void ds_PlotElementLoaded(object sender, EventArgs e)
  2:         {
  3:             var bar = (Bar)sender;
  4: 
  5:             var series = bar.DataPoint.Series;
  6:             int i = BarColumnOptions.GetStackGroup(series);
  7: 
  8:             // To avoid that the bar closes to the y axis is attached to the axis.
  9:             bar.Margin = new System.Windows.Thickness(10, 0, 0, 0);
 10: 
 11:              bar.RenderTransform = new TranslateTransform() { X = bar.ActualWidth / 4 };
 12:              bar.Width = 3;   //每个柱子的宽度
 13:         }

设置后,执行的效果如下,柱子变细了。

 

C1Chart_plot

 

源码下载: