将对象列表绑定到图表

时间:2015-12-14 22:09:44

标签: c# list data-binding charts

我有一个对象列表:

List<MyClass> MyList = new List<MyClass>();

MyClass包含实时更新的Properties Dtm和LastPrice

public class MyClass
{
    int dtm;
    double lastPrice = 0;

    public int Dtm
    {
        get { return dtm; }
        set { dtm = value; }
    }

    public double LastPrice
    {
        get { return lastPrice; }
        set { lastPrice = value; }
    }

}

我现在想要一个列在列表中的图表,每次属性更改时都会自动更新。关于如何做的任何想法?

由于

1 个答案:

答案 0 :(得分:1)

有关Binding Data to Series (Chart Controls) see here!

的概述

List<T>绑定到Chart的最简单方法是将列表设置为DataSource并设置X和Y值成员:

chart1.DataSource = MyList;
S1.XValueMember = "Dtm";
S1.YValueMembers = "LastPrice";

至于更新图表,请使用DataBind方法:

chart1.DataBind();

现在您有两个选择:

您知道何时值会发生变化;那么您可以在更改后添加调用。

但也许你不知道这些变化何时发生,或者有许多演员都可能改变名单。

为此,您可以将DataBind来电权限添加到相关媒体资源的设置者中:

public class MyClass
{
    int dtm;
    double lastPrice = 0;
    public static Chart chart_ { get; set; }

    public int Dtm
    {
        get { return dtm; }
        set { dtm = value; }
    }

    public double LastPrice
    {
        get { return lastPrice; }
        set { lastPrice = value; chart_.DataBind(); }
    }

     // a constructor to make life a little easier:
    public MyClass(int dt, double lpr)
    { Dtm = dt; LastPrice = lpr; }
}

为此,列表必须了解要更新的图表。我已经添加了对该类的引用。所以在添加/绑定点之前,我们设置了一个图表参考:

MyClass.chart_ = chart1;  // set the static chart to update

// a few test data using a Random object R:
for (int i = 0; i < 15; i++)
    MyList.Add(new MyClass(R.Next(100) + 1 , R.Next(100) / 10f) );

引用可以是static,因为所有List元素都将更新相同的图表。