2012-05-18 23 views
1

由于缺少有关XML主题部分的信息,因此使用MSchart控件有点困难。将默认主题应用于图表系列

我以编程方式和动态创建图表,然后使用XML主题文件向其添加主题。

我不知道会有多少系列,但我试图为StackedColumnBar中每列添加一个系列的总量。

因此,我从数据创建foreach循环中的每个serie,然后将Total系列添加为气泡图类型。

现在我必须将不同的系列主题应用于Total系列,并让所有其他人拥有相同的主题。

我尝试在图表和主题文件中命名系列“Total”。真正的捕获是模板 =“所有”属性,因为这没有记录在任何地方,所以我不知道它是如何工作的以及它如何被应用。一个主题的

例子:

<Chart BackColor="White" 
     BorderWidth="2" 
     Palette = "None" 
     PaletteCustomColors="#F29E39; #007463; #E76E34; #A4A4A4; #94BBA3;" 
     BorderlineDashStyle="Solid" 
     AntiAliasing="All"> 
    <Series> 
    <Series Name="Total" 
     BorderWidth="0" 
     LabelForeColor="#FF000000" 
     LabelFormat="C" 
     IsVisibleInLegend="false" 
     IsValueShownAsLabel="true" > 
    </Series> 
    <Series _Template_="All" 
      BorderWidth="0" 
      LabelForeColor="#AAFFFFFF" 
      LabelFormat="C" 
      CustomProperties="PointWidth=0.9, DrawingStyle=LightToDark" 
      IsValueShownAsLabel="false" > 
    </Series> 
    </Series> 
    <ChartAreas> 
    <ChartArea Name="Default" 
       _Template_="All" 
       BorderWidth="0"> 
     <AxisY IsInterlaced="true" 
      InterlacedColor="#E8E7DC"> 
     <MajorGrid Enabled="false" /> 
     </AxisY> 
     <AxisX> 
     <MajorGrid Enabled="false" /> 
     </AxisX> 
    </ChartArea> 
    </ChartAreas> 
    <Legends> 
    <Legend _Template_="All" 
      Alignment="Center" 
      LegendItemOrder="ReversedSeriesOrder" 
      Docking="Bottom"/> 
    </Legends> 
</Chart> 

回答

0

因为我们要添加系列现有图表区域的更好的代码中使用databindXY背后,例如:

var query = ... select new 
{ 
sumXValue = .., 
sumYValue = .. 
} //chart datasource 

chart1.datasource = query; 

Series series = new Series(); series.Name = "Total"; 
series.ChartType = SeriesChartType.StackedColumn; 
series.Points.DataBindXY(query, sumXvalue, query.sumYValue); 
chart1.Series.Add(series); 

这将增加新的系列,以在chartarea现有的系列

+0

添加系列从来都不是问题。它将一个特定的模板添加到XML中的一个特定系列中,我不知道该怎么做。 –

+0

对于误解感到抱歉,但为什么您在一个ChartArea上使用多个模板,据我所知,只有1个模板可以应用于1个ChartArea,除非您的计划使用了多个ChartArea? –

+0

我试图让最后一个泡泡的总价值浮在堆栈之上。有没有另一种方式可以做到这一点? –

0

我知道这是一个较旧的帖子,但我碰到,而我最近试图解决同样的问题。如果您使用的是XML模板,那么即使在运行时添加数据,也可以为数据中的每个系列添加一个元素,只需确保该系列的顺序与数据的添加方式相匹配,并且无需任何操作问题。我已经用这种方法测试过组合图表,并且效果很好。

<Series> 
    <Series Name="FirstSeriesName" Borderwidth="0"></Series> 
    <Series Name="SecondSeriesName" Borderwidth="0"></Series> 
    <Series Name="ThirdSeriesName" Borderwidth="3"></Series> 
</Series> 

我还没有想出如何将此与主题选项结合起来,但由于现在不幸的是,它看起来像你将不得不单独样式每个系列使用XML主题(或改变运行时单一系列的选项)。

相关问题