Datagrid itemssource和绑定问题

时间:2015-03-02 21:20:18

标签: c# wpf mvvm datagrid

class Order
{
    public string StockName         { get; set; }
    public decimal PurchasePrice    { get; set; }
}

class Account
{
    public string Name { get; set; }
    public ObservableCollection<Order> OrderList { get; set; }
}

var AccountList = new ObservableCollection<Account>()
{
    new Account(){Name= "Acc1", OrderList = new ObservableCollection<Order>() { new Order(){ StockName="IBM", PurchasePrice=20.00m}}},
    new Account(){Name= "Acc2", OrderList = new ObservableCollection<Order>() { new Order(){ StockName="IBM", PurchasePrice=21.00m}, new Order(){ StockName="YHOO", PurchasePrice=6.00m}}}
};

假设我有上面列出的类和数据存储库。我想要一个datagrid,它输出每个单元格中的平均购买价格,其中列对应于帐户名称,行对应于stockname。我可以在理论上使用代码隐藏来做到这一点,但是我使用MVVM方法并且无法设置可以完成我需要做的事情的属性和绑定,主要问题是帐户的数量和名称不是已知,订单历史将永远在变化。

预期的数据网格看起来像这样:

             Acc1     Acc2  
IBM      |    20    |    21  |    
YHOO     |    0     |    6   |

我最初的想法是创建一个连续的订单列表,然后使用按功能分组按stockname对其进行分组,但此时我不确定如何按列(帐户)填充数据。

不确定如何从这里开始。

1 个答案:

答案 0 :(得分:1)

您需要处理当前数据并将其放入与输出数据匹配的结构中。因此,您需要最终得到一个条目集合,其中每个条目都是一个股票。然后在每个股票条目中,您需要所有帐户的相同集合。每个帐户条目将是该客户购买该股票的平均购买价格。许多人将为零,因为该帐户尚未购买任何该股票。

现在它变得更加容易,因为您可以将您的股票条目集合绑定到数据网格,每个股票变成一行。然后设置数据网格列,以便每列引用该行中的指定帐户。