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#的有限知识。 感谢提前的任何方向/示例/代码片段
答案 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
内容
答案 1 :(得分: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
});
}