C#Class除了收藏

时间:2017-02-15 23:11:49

标签: c# wpf collections

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#的有限知识。 感谢提前的任何方向/示例/代码片段

2 个答案:

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