2010-07-07 62 views
0

如何顯示DataGrid中顯示的每條記錄的特定列的運行總數?我想保持視圖模型中的計算邏輯。DataGrid - 通過當前行顯示網格頂部的運行總數

所需的輸出:

 
Value  | Running Total 
25   25 
10   35 
-2   33 

謝謝

編輯:請記住,當用戶觸發DataGrid的排序發生時,運行總計必須重新計算,因爲記錄顯示順序已更改。

我真的想把這個邏輯放在視圖模型中,而不是WPF代碼中(例如不使用IValueConverter)。

+0

你真的問如何遍歷集合,以計算總和?否則,這可以在使用valueconverter的視圖中解決。你收集和記錄的類型是什麼?記錄類是否有全部屬性?你支持排序嗎?值的更新? – 2010-07-07 20:35:15

+0

@WP - 我認爲這裏的問題是把總數放在哪裏,而不是如何得到它。你的第一個想法是想知道網格是否可以像excel一樣爲你展示頁腳。歡呼聲 – Berryl 2010-07-07 20:45:53

+0

@ WP - 我正在使用一個ObservableCollection 持有Item對象。是的,全部財產;是的,排序;不,更新。 – 2010-07-07 20:52:14

回答

0

我不知道有一個建議/支持/簡單的方法來做到這一點。我能想到的選擇是:
1)在數據網格外部有一些UI元素來保存總數。這很容易綁定到您的虛擬機,但有點痛苦來解決將出現的對齊問題,因爲您可能希望列下的總權限。這是我會推薦的。
2)在網格中有虛擬最後一行;這解決了對齊問題,但增加了虛擬機的黑客邏輯,並且可能看起來不太好。

HTH,
Berryl

0

如果你不介意在VB答案,或者C#則this tutorial展示瞭如何做你在VB中想要什麼,並this tutorial顯示它在C#中。兩者都在網格中使用虛擬列。

+0

是的,我同意。我以爲他希望總共有一個專欄放在它的下面。歡呼 – Berryl 2010-07-07 20:48:02

0

查看這個答案,瞭解如何將行計數列添加到列表框並使用值轉換器進行填充。而不是計算項目,加起來的項目總數。如果你需要VM中的總和,這當然不是一個好的解決方案。

Numbered listbox

+0

你有沒有鏈接提到你提到的答案? – 2010-07-14 23:12:39

+0

謝謝,添加了缺失的鏈接 – 2010-07-15 12:46:54

+0

這是一個有趣的方法。感謝分享它。其中一件簡單的事情是,傳遞給網格的ItemsSource的集合中的對象不需要具有Balance屬性。 – 2010-07-16 15:15:47