在WPF中,如何在一张笛卡尔图表中使用不同样式的系列?

时间:2019-06-26 04:33:29

标签: wpf livecharts

有关信息,我正在使用实时图表库。

我要制作的是带有参考信息的图表柱形图。 结果将如下所示。

enter image description here 我计划要做的是使用柱形图和折线图。 当我运行时,结果仅显示柱形图。 甚至步进线系列数据也显示为列。

如何在一张图表中显示不同的样式?

enter image description here

这是我的Xaml代码。

    <ScrollViewer HorizontalScrollBarVisibility="Visible" Width="1200" >
        <lvc:CartesianChart Name="MainChart" Series="{Binding Path=MainData}" Width="{Binding Path=MainChartWidth}">
                <lvc:CartesianChart.DataTooltip>
                    <lvc:DefaultTooltip SelectionMode="OnlySender"/>
                </lvc:CartesianChart.DataTooltip>
                <lvc:CartesianChart.AxisX>
                    <lvc:Axis Name="XAxis" Labels="{Binding Path=MainDataLabel}" ></lvc:Axis>
                </lvc:CartesianChart.AxisX>            
        </lvc:CartesianChart>
    </ScrollViewer>

这是与问题相关的代码。

        for (int idx = 0; idx < MainDataTable.Columns.Count; idx++)
        {
            List<string[]> tmpList = new List<string[]>();

            else if (idx == 1)
            {
                string[] tmpArray = new string[3];

                StepLineSeries tmpLineSeries = new StepLineSeries();
                List<int> tmpDataList = new List<int>();
                tmpLineSeries.Title = MainDataTable.Columns[idx].ColumnName;
                tmpLineSeries.Fill = Brushes.Transparent;
                tmpLineSeries.PointGeometry = null;
                tmpLineSeries.Width = 10;
                tmpLineSeries.StrokeThickness = 10;


                for (int rowCnt = 0; rowCnt < MainDataTable.Rows.Count; rowCnt++)
                {
                    tmpDataList.Add(Int32.Parse(MainDataTable.Rows[rowCnt][idx].ToString()));
                }
                tmpLineSeries.Values = new ChartValues<int>(tmpDataList);

                MainData.Add(tmpLineSeries);

            }
            else if (idx > 1) // (idx > 0)
            {
                string[] tmpArray = new string[3];

                ColumnSeries tmpLineSeries = new ColumnSeries();
                List<int> tmpDataList = new List<int>();
                tmpLineSeries.Title = MainDataTable.Columns[idx].ColumnName;
                tmpLineSeries.Stroke = new SolidColorBrush(searchCondition.getConditionColor(MainDataTable.Columns[idx].ColumnName));
                tmpLineSeries.Width = 15;

                for (int rowCnt = 0; rowCnt < MainDataTable.Rows.Count; rowCnt++)
                {
                    tmpDataList.Add(Int32.Parse(MainDataTable.Rows[rowCnt][idx].ToString()));
                }
                tmpLineSeries.Values = new ChartValues<int>(tmpDataList);

                MainData.Add(tmpLineSeries);

            }
        }

谢谢。

0 个答案:

没有答案