C# wpf中DataGrid 支持汇总行
最近有一個需求,需要匯總金額,份額等字段。我們使用的是原生的WPF控件,自己開發了一套Template。而沒有使用比較成熟的第三方控件。所以這個功能得自己開發。并且要做成控件層次的功能。
當然也可以這樣做,在ItemSource數據中手動匯總一行并顯示。但這樣做是純業務層次的東西。且每個不同的界面。要做不同的業務邏輯處理。太LOW。
思路: 我們先來看下WPF原生DataGrid的模板,發現里面其實是一個ItemsPresener來呈現所有的數據行。第一種想法是,那么我們是否可以在ItemPresenter下面再放一個ItemPresenter來顯示為匯總行。理想很豐滿。問題是,看不到ItemPresenter是如何來呈現 ItemSoruce里的數據的源代碼。WPF似乎并沒有對這些實現做開源,事實上,我們對ItemPresenter的工作原理一無所知,只知道為ListBox等包含
itemPresenter控件的列表類控件,指定items或者itemsource后,控件會為我們呈現數據。(有大神指導怎么看源碼的么?)。
退而求其次,新的想法是。為什么不在ItemsPresener下方。再放一個DataGrid那?列完全和上方的一樣,對需要匯總的列做數據匯總。
?
那么我們來改造這個模板,新的模板代碼如下
?
?然后我們為這個新的模板創建一個新的類 ,繼承自DataGrid
public class DateGridTotal:DataGrid{}
在ApplyTemplate時間處理函數中,構造這個新增的TotalRow,注意這里的綁定,這是整個程序的原理
最后在?OnItemsSourceChanged()函數中,根據控件的Itemsource 數據,生成匯總行的數據,并綁定到匯總行DATAGRID的itemsource。
?
?
?大概思路和實現就是這樣啦。可以參考附件源碼
?
?
轉載于:https://www.cnblogs.com/CSSZBB/p/8919805.html
總結
以上是生活随笔為你收集整理的C# wpf中DataGrid 支持汇总行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么都不必说 Gradle--build
- 下一篇: C# Web下的类库 项目中获取程序的运