2017-02-15 70 views
0
using System; 
using System.Windows; 
using System.Collections.Generic; 
using Microsoft.Research.DynamicDataDisplay.DataSources; 
using System.Windows.Threading; 

namespace ClassReferenceStackOverFlow 
{ 

public partial class MainWindow : Window 
{ 
    public ObservableDataSource<StockInfo1> stockData1 = null; 
    public MainWindow() 
    { 
     InitializeComponent(); 

     DateTime time = DateTime.Now; 
     double price = 180.00; // IBM stock price 
     StockInfo1 info = new StockInfo1 { Time = time, Price = price }; 
     stockData1.AppendAsync(Dispatcher, info); 
    } 

    public class StockInfo1 
    { 
     public DateTime Time { get; set; } 
     public double Price { get; set; } 
     public double Range { get; set; } 
    } 
} 
} 

我對C#/ WPF相當新。想要追蹤/繪製多個股票(例如:IBM作爲StockInfo1)。如何在不創建醜陋的StockInfo2,StockInfo3等的情況下實現整潔? 一直在尋找和嘗試幾個選項,但超出了我對C#的有限知識。 感謝任何方向/例子/代碼片段提前C#類除了集合

+0

請問一個'清單解決你的問題? –

回答

1

只要有一類股票

public class Stock 
{ 
    public string Symbol { get; set; } 
    public ObservableCollection<StockInfo> StockInfos { get; } = new ObservableCollection<StockInfo>(); 
}  

public class StockInfo 
{ 
    public DateTime Time { get; set; } 
    public double Price { get; set; } 
    public double Range { get; set; } 
} 

然後在主類

public ObservableCollection<Stock> Stocks { get; } = new ObservableCollection<Stock>(); 

沒有必要爲此AppendAsync東西

+0

進一步澄清:數據來自交易所(紐約證券交易所,芝加哥商品交易所,納斯達克等)。每秒鐘/分鐘實時報價(符號,價格,時間)。必須找到正確的集合並將該報價添加到集合中。在Microsoft的動態數據顯示中,ObservableData Source有一個AppendAsync函數,允許圖表數據異步添加。當有大量數據以穩定流的形式進入時Handy。目前我讀取符號,識別集合(StockInfo1,StockInfo2,.20)並添加要繪製的數據點。 –

1

你不需要StockInfo2 只是使用一個列表或數組

public List<ObservableDataSource<StockInfo>> StockList = new List<ObservableDataSource<StockInfo>>(); 

那麼你可以使用

var info = new ObservableDataSource<StockInfo>>(new StockInfo { 
    Time = DateTime.Now, 
    Price = 20 
}) 
StockList.add(info); 

到一個新的股票添加到列表中

,或者你寫一個函數來添加一個新的StockInfo

public void addStockInfo(Double price,DateTime time){ 
    StockList.add(new ObservableDataSource<StockInfo>>(new StockInfo { 
     Time = time, 
     Price = price 
    }); 
}