我有一个8系列的图表 - 称他们为S1至S8。它们在图表的系列列表中按顺序排列,并使用自定义图例项(Legend.CustomItems)显示。一切正常,但是当图例环绕到新线时,似乎有一个错误,表明图例中的项目显示方式。
我希望项目以行显示:
S1 S2 S3 S4
S5 S6 S7 S8
不幸的是,似乎当图例检测到它需要两行时,它会在水平之前垂直填充,如下所示:
S1 S3 S5 S7
S2 S4 S6 S8
有没有办法正确安排物品?这是控件的错误吗?
var chart = new Chart();
// More chart setup
foreach(var s in chart.Series)
{
if (simpleLegend) chart.Legends[0].CustomItems.Add(s.Color, s.LegendText);
else
{
var legendItem = new LegendItem();
// Legend item customization
chart.Legends[0].CustomItems.Add(legendItem);
}
}
修改
要说清楚,问题在于图例项的布局,而不是订单。根据图例项目的长度,我可能最终得到这种布局:
S1 S3 S5 S7 S8
S2 S4 S6
答案 0 :(得分:4)
您可以在CustomizeLegend
事件中安排它们。
将OnCustomizeLegend="Chart1_CustomizeLegend"
添加到图表标记或将其绑定在代码后面。然后创建处理程序:
protected void Chart1_CustomizeLegend(object sender, CustomizeLegendEventArgs e)
{
//change order of legend items
var items = e.LegendItems;
var item = items[1]; //s2
items.RemoveAt(1);
items.Insert(2, item);
item = items[1]; //after removing s2, s3 is now here
items.RemoveAt(1);
items.Insert(4, item);
//etc...
}
或者您可以先创建一些集合,然后按所需顺序引用现有图例项,然后清除LegendItems
并一次插入所有项目来填充它。我认为你可以用一种对所有物品编号都有效的方式来写它,但我留给你;)。
更多信息:http://msdn.microsoft.com/en-us/library/dd488245.aspx
(我知道这个问题差不多已有2年了,但也许有同样问题的人(比如我今天)会觉得这很有帮助。)