为什么我的livecharts piechart创建了3个图表,而不是3个图表



我有一个我想在饼图中显示的数据表。Amount将是值和MsgType lable。该图应有3个切片。桌子看起来像这样:

MsgType    Amount
-----------------
3          4500
2          1262
1          3956

我遵循了一些示例,在我的应用程序中创建了一个新的馅饼系列和节目。代码范围如下:

    public SeriesCollection MsgTypeDoughnut { get; set; }
    public List<int> Lables { get; set; }

    public MsgTypeProportion()
    {
        InitializeComponent();
        List<DataMsgType> dataMsgTypes = GetMsgType();
        ChartValues<int> values = new ChartValues<int>();
        Lables = new List<int>();
        foreach (var item in dataMsgTypes)
        {
            values.Add(item.Amount);
            Lables.Add(item.MsgType);
        }
        MsgTypeDoughnut = new SeriesCollection
        {
            new PieSeries
            {
                Title = "Amount",
                Values = values,
                DataLabels = true
            }
        };
        DataContext = this;
    }
    public List<DataMsgType> GetMsgType()
    {
        DataSet DS = new DataSet();
        DataSetTableAdapters.spMessages_GetMsgTypeOverviewTableAdapter MsgTypeta = new DataSetTableAdapters.spMessages_GetMsgTypeOverviewTableAdapter();
        MsgTypeta.Fill(DS.spMessages_GetMsgTypeOverview);
        List<DataMsgType> dataMsgTypes = new List<DataMsgType>();
        foreach (DataRow row in DS.Tables["spMessages_GetMsgTypeOverview"].Rows)
        {
            dataMsgTypes.Add(new DataMsgType() { MsgType = (int)row["MsgType"], Amount = (int)row["Amount"]});
        }
        return dataMsgTypes;
    }

,但这在1 piechart中创建了3个新的piecharts,而不是3个切片。我发现了这个问题如何使用livecharts,解决方案是要有多个PieSeries,但我不知道如何使用我的表中的行。

我找到了答案,而不是这样做:

foreach (var item in dataMsgTypes)
    {
        values.Add(item.Amount);
        Lables.Add(item.MsgType);
    }
    MsgTypeDoughnut = new SeriesCollection
    {
        new PieSeries
        {
            Title = "Amount",
            Values = values,
            DataLabels = true
        }
    };

我必须做:

MsgTypeDoughnut = new SeriesCollection();
foreach (var item in dataMsgTypes)
        {
            MsgTypeDoughnut.Add(new PieSeries
            {
                Title = "test",
                Values = new ChartValues<ObservableValue> { new ObservableValue(item.Amount) },
                DataLabels = true,
                Stroke = System.Windows.Media.Brushes.Transparent
            });
            Lables.Add("MsgType " + (item.MsgType));
        }

这样,我的表行中的数据将作为新切片而不是新饼图添加到piechart。

相关内容

  • 没有找到相关文章

最新更新