2017-02-15 9 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 as 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

Дальнейшие пояснения: Данные поступают с бирж (NYSE, CME, NASDAQ и т. Д.). Каждую секунду/минуту в реальном времени, цитату с (символ, цена, время). Правильная коллекция должна быть расположена, а цитата добавлена ​​в коллекцию. В динамическом представлении данных Microsoft ObservableData Source имеет функцию AppendAsync, которая позволяет добавлять данные диаграммы асинхронно Handy, когда имеется множество данных, поступающих в виде устойчивого потока. В настоящее время я читаю символ, идентифицирую Collection (StockInfo1, StockInfo2, ... 20) и добавляю datapoint для намечаемого. –

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 
    }); 
}