如何顯示DataGrid中顯示的每條記錄的特定列的運行總數?我想保持視圖模型中的計算邏輯。DataGrid - 通過當前行顯示網格頂部的運行總數
所需的輸出:
Value | Running Total 25 25 10 35 -2 33
謝謝
本
編輯:請記住,當用戶觸發DataGrid的排序發生時,運行總計必須重新計算,因爲記錄顯示順序已更改。
我真的想把這個邏輯放在視圖模型中,而不是WPF代碼中(例如不使用IValueConverter)。
如何顯示DataGrid中顯示的每條記錄的特定列的運行總數?我想保持視圖模型中的計算邏輯。DataGrid - 通過當前行顯示網格頂部的運行總數
所需的輸出:
Value | Running Total 25 25 10 35 -2 33
謝謝
本
編輯:請記住,當用戶觸發DataGrid的排序發生時,運行總計必須重新計算,因爲記錄顯示順序已更改。
我真的想把這個邏輯放在視圖模型中,而不是WPF代碼中(例如不使用IValueConverter)。
這是唯一的想法:其實,DataGrid中使用ICollectionView接口(http://msdn.microsoft.com/en-us/library/system.componentmodel.icollectionview.aspx)實施分類(如分組中http://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid(VS.95).aspx描述,排序與過濾部分
所以,你可以。創建實現ICollectionView接口的類,並觀察排序並相應更新運行總數。
我不知道有一個建議/支持/簡單的方法來做到這一點。我能想到的選擇是:
1)在數據網格外部有一些UI元素來保存總數。這很容易綁定到您的虛擬機,但有點痛苦來解決將出現的對齊問題,因爲您可能希望列下的總權限。這是我會推薦的。
2)在網格中有虛擬最後一行;這解決了對齊問題,但增加了虛擬機的黑客邏輯,並且可能看起來不太好。
HTH,
Berryl
如果你不介意在VB答案,或者C#則this tutorial展示瞭如何做你在VB中想要什麼,並this tutorial顯示它在C#中。兩者都在網格中使用虛擬列。
是的,我同意。我以爲他希望總共有一個專欄放在它的下面。歡呼 – Berryl 2010-07-07 20:48:02
查看這個答案,瞭解如何將行計數列添加到列表框並使用值轉換器進行填充。而不是計算項目,加起來的項目總數。如果你需要VM中的總和,這當然不是一個好的解決方案。
你有沒有鏈接提到你提到的答案? – 2010-07-14 23:12:39
謝謝,添加了缺失的鏈接 – 2010-07-15 12:46:54
這是一個有趣的方法。感謝分享它。其中一件簡單的事情是,傳遞給網格的ItemsSource的集合中的對象不需要具有Balance屬性。 – 2010-07-16 15:15:47
我最終解決了這個問題,通過擴展DataGrid來公開一個屬性h可能會綁定到視圖模型上的「度假村已發生」回調。
詳情:http://bengribaudo.com/blog/2010/07/14/3/datagrid-per-row-running-totals
你真的問如何遍歷集合,以計算總和?否則,這可以在使用valueconverter的視圖中解決。你收集和記錄的類型是什麼?記錄類是否有全部屬性?你支持排序嗎?值的更新? – 2010-07-07 20:35:15
@WP - 我認爲這裏的問題是把總數放在哪裏,而不是如何得到它。你的第一個想法是想知道網格是否可以像excel一樣爲你展示頁腳。歡呼聲 – Berryl 2010-07-07 20:45:53
@ WP - 我正在使用一個ObservableCollection- 持有Item對象。是的,全部財產;是的,排序;不,更新。 –
2010-07-07 20:52:14