2015-03-02 96 views
0
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}}} 
}; 

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

预期的DataGrid能是这个样子:

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

我最初的想法是创建一个级联顺序列表,然后通过stockname按功能使用一组进行分组,但在这一点上我不知道如何填充列(帐户)的数据。

不知道如何从这里开始。

+0

你想如何显示数据。如名称和平均(PurchasePrice)。它是正确的? – 2015-03-02 21:48:20

回答

1

您需要处理当前的数据并将其放置到与您希望输出它的方式相匹配的结构中。所以你最终需要收集每个条目都是股票的条目。然后在每个库存条目中,您需要所有帐户的相同集合。每个账户条目将是该客户购买该股票的平均购买价格。许多因素会为零,因为账户没有买入任何股票。

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

+0

没错,但是如何在没有明确地在XAML或数据网格的重新处理数据中设置列? – cubesnyc 2015-03-02 23:40:26

+0

我认为你需要在代码中明确地做到这一点,因为这组列是动态的。 – 2015-03-03 00:22:32