2011-02-22 62 views
0

我想,使用WPF,在下面的形式呈現數據:WPF - 自定義數據呈現

圖片:http://i.stack.imgur.com/54CkI.png

即 - 按月份分組中的數據。每月的標題行,詳細信息和彙總行。具有多列的簡單表格的細節。

此外,當我試圖通過使用CollectionViewSource.GroupDescriptions分組數據 - 它是非常緩慢的。

所以我打算在視圖模型組數據並返回它們作爲類那樣的對象集合:

public class Group 
{ 
    string Month; 
    IEnumerable<GroupItem> Details; 
    string Summary; 
} 

列沒有進行排序,但它應該是可以改變的寬度全球範圍內的列 - 由所有團體。我覺得這個「遊戲」會和colspan和rowspan混合在一起。

什麼是在WPF中呈現此類數據的最佳方式 - 使用哪些控件以及如何定義模板。

回答

0

我已經在DevExpress中使用了Windows窗體應用程序中的PivotGrid,它非常棒。我認爲他們也爲Silverlight和WPF做PivotGrid控件,你可以檢查他們的網站。

我不會嘗試使用標準控件來模擬所有這些功能,但最終會得到如此多的代碼,並且與更堅實和特別開發的組件相比,它仍然是一個平庸的結果。

P.S.這不是垃圾郵件,如果你不想去DevExpress的方向,無論如何還有許多其他供應商,我只是建議我知道什麼,我知道什麼是好的和有效的。

0

您可以使用ListView並創建一個ItemTemplet。

這是一個基本的骨架。您可能需要設置一些寬度,並可能添加一些邊框以獲得正確的結果。您還需要爲ListView創建一個ItemTemplate,以顯示詳細信息。

<ListView ItemsSource="{Binding TheData}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding Month}" /> 
         <StackPanel> 
          <ListView ItemsSource="{Binding Details}" /> 
          <TextBlock Text="{Binding Summary}" /> 
         </StackPanel> 
        </StackPanel> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView>