2

XMLテーマ部分の情報が不足しているため、MSchartコントロールの使用はやや困難です。

プログラムと動的にグラフを作成し、XMLテーマファイルを使用してグラフにテーマを追加しています。

シリーズがいくつあるかわかりませんが、StackedColumnBarの各列の合計金額に1つのシリーズを追加しようとしています。

そこで、データからforeachループで各シリーズを作成し、Totalシリーズをバブルチャートタイプとして追加します。

次に、Totalシリーズに別のシリーズテーマを適用し、他のすべてのテーマに同じテーマを持たせる必要があります。

チャートとテーマファイルの両方でシリーズに「合計」という名前を付けてみました。本当の問題は、Template = "All"属性です。これはどこにも文書化されていないため、すべてが実際にどのように機能し、どのように適用されているのかわかりません。

テーマの例:

<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>
4

2 に答える 2

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);

これにより、チャートエリアの既存のシリーズに新しいシリーズが追加されます

于 2012-08-15T09:45:42.683 に答える