2015-03-02 122 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