【问题标题】:C# Class addition to collectionC# 类添加到集合
【发布时间】:2017-02-15 23:11:48
【问题描述】:
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# 的有限知识。 提前感谢任何方向/示例/代码sn-ps

【问题讨论】:

  • List&lt;StockInfo1&gt; 能解决您的问题吗?

标签: c# wpf collections


【解决方案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 的东西

【讨论】:

  • 进一步澄清:数据来自交易所(纽约证券交易所、芝商所、纳斯达克等)。每秒/分钟实时,带有(符号,价格,时间)的报价。必须找到正确的集合并将报价添加到集合中。在微软的动态数据显示中,ObservableData Source 有一个 AppendAsync 函数,允许异步添加图表数据,当有大量数据以稳定流的形式进入时非常方便。目前我阅读了符号,识别集合(StockInfo1,StockInfo2,...... 20)并添加要绘制的数据点。
【解决方案2】:

你不需要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
    });
}

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    相关资源
    最近更新 更多