2015-12-14 53 views
1

我有對象的列表:綁定對象的列表,以圖表

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

的MyClass包含可屬性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; } 
    } 

} 

我想現在的圖表內襯到每次屬性更改時自動更新的列表。任何想法如何做到這一點?

感謝

+0

你可以使用'BindingList '用於WinForms或'ObservableCollection '用於WPF而不是'List '。 – Dmitry

+0

你能更具體嗎?或舉一個例子? – prre72

+0

你在做什麼:Winforms? WPF? ASP? ...? __Always__相應地標記您的問題!另外[請參閱MSDN](https://msdn.microsoft.com/library/dd456766%28v=vs.100%29.aspx) – TaW

回答

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,因爲所有的列表元素將更新相同的圖。