2012-05-18 21 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主題(或改變運行時單一系列的選項)。

相關問題