c# - 将默认主题应用于图表系列

标签 c# xml data-visualization mschart

由于缺少 XML 主题部分的信息,使用 MSchart 控件有些困难。

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

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

因此,我在 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>

最佳答案

因为我们想为现有图表区域添加系列,所以最好在代码隐藏中使用 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);

这会将新系列添加到图表区域中的现有系列

关于c# - 将默认主题应用于图表系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10657538/

相关文章:

javascript - 如何将日期时间值附加到表单数据并在 Controller 中接收它

Python:绘制位置数据的气泡图

javascript - 如何将多值数据传递给 dc.js 中的等值线

c# - 如何在 C# 中计算整数的除法和模数?

c# - 你能只参数化where子句吗?

c# - 为什么 NLog 在记录大量消息时会漏掉一些消息?

c# - 如何在运行时针对 xsd 验证 xml 而无需将 xsd 文件保存在本地文件夹中?

javascript - 如何使用netsuite中的suitescript提取XML值@attribute?

java - 尝试使用 dom4j 解析 XML 时属性值为 null

javascript - highchart 将 x 轴标签放置在日期时间轴上的刻度之间