2017-06-05 89 views
-2

thisのようなwpfデータグリッドで合計行を作りたいと思います。 xamlでそのような行を作成する方法がわかりません。私は他の行をスクロールするときに凍結する必要があります。wpf datagrid合計行

誰かが、データソースに合計アイテムを追加し、そのアイテムの特別なテンプレートを作成することができます。しかしこれはちょっと変わったようです。

私はそのための解決策が見つかりませんでした。誰かがそれをどうやって考えているのですか?

+0

データグリッドヘッダーを拡張することができます。 StackPanelとそこに合計のラベルやテキストブロックを置く? – Stuart

+0

@Stuart素晴らしい!ありがとうございました。私はそれが簡単だろうとは思わなかったし、間違った質問を探した。 –

答えて

0

あなたのTextBlock.Textをあなたの値にバインドすることができます。あなたのすべての列のためにこれを行うには、あなたが結合

<TextBlock Text="{Binding}" TextWrapping="Wrap"/> 
を使用するように Headerテンプレートで TextBlock.Textを変更することができ、各列のためにそれを行うには、代わりにこの

<DataGrid ...> 
    <DataGrid.Resources> 
     <Style TargetType="{x:Type DataGridColumnHeader}"> 
     <Setter Property="ContentTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <TextBlock Text="{Binding}" TextWrapping="Wrap"/> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
     </Style> 
    </DataGrid.Resources> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Name}" Header="Header Text"> 
    </DataGrid.Columns> 
</DataGrid> 

のようなあなたのDataGridヘッダーのためのContentTemplateを変更することができます

してから列がこの

<DataGridTextColumn 
    Binding="{Binding Name}" 
    HeaderTemplate="{StaticResource ColumnHeaderTemplate}" 
    Header="Header Text"/> 
0

のようになります。私はそれを解決するために、同様の問題を持っていた私は、ドックパネルaを作成データグリッドを一番上にドッキングしました。次に、各テーブル列のテキストボックスを含む水平スタックパネルを作成し、必要な合計を入力した後、これをドッキングパネルの下部にドッキングしました。データグリッドScrollViewer.VerticalScrollBarVisibilityをautoに設定すると、データグリッドの下部に合計行が常に表示され、コンテナのデータグリッドが大きくなるとスクロールコンテナにラップされます(合計行はまだ表示されます) 。