0

只是试图做一些基本的事情并且我被卡住了。想要在我的模型类中初始化一个可观察的集合(参见下面的代码)并且似乎无法让它工作。我已经为不工作的部分添加了_ 。

有人可以提供指点吗

public class StockModel : ObservableCollection<KeyValuePair<string, TickerDetails>>
{
    #region Properties
    public string TickerSymbol { get; set; }
    public TickerDetails Ticker { get; set; }
    #endregion

    public StockModel()
    {
        init();   
    }

    public void init()
    {
        Add(new KeyValuePair<string, TickerDetails> { "ABC", new TickerDetails {TickerName="ABC", LastPrice=30, Ask=40, Bid=50, Volume=60 }});
    }

    public ObservableCollection<KeyValuePair<string, TickerDetails>> getData()
    {
        return this;
    }
}

public class TickerDetails
{
    public string TickerName { get; set; }
    public int LastPrice { get; set; }
    public int Bid { get; set; }
    public int Ask { get; set; }
    public int Volume { get; set; }
}

我知道我可以采用传统方式(如下所示)但想学习上述方法

Dictionary<int, StudentName> students = new Dictionary<int, StudentName>()
{
    { 111, new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}},
    { 112, new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}},
    { 113, new StudentName {FirstName="Andy", LastName="Ruth", ID=198}}
};
4

2 回答 2

2

查看继承的 ObservableCollection 上的类型:

ObservableCollection<string, List<int>>

这使您的类型成为字符串和列表的集合,而不是字符串和 TickerDetails。将继承的类型更改为字符串 TickerDetails,您将能够进行初始化。但是,您还需要更改 getData() 的签名以匹配新继承的签名,或者提供从 TickerDetails 到 List、Int 的转换

于 2012-04-12T20:28:48.643 回答
0

不是这样吗

Add(new KeyValuePair<string, object> { "ABC", new TickerDetails { TickerName = "tick tock", LastPrice = 10 }});

?

您只需要实例化一个新的 TickerDetails 即可。

无论如何,这不匹配,ObservableCollection<KeyValuePair<string, List<int>>>所以它更像是:

Add(new KeyValuePair<string, List<int>> { "ABC", new List<int> { 1, 2, 3, 4 }});

编辑:使用您的最新编辑,第一个示例应该可以工作。

于 2012-04-12T20:24:33.627 回答