2017-06-05 4 views
-2

Ich möchte eine Gesamtreihe in einem Wpf DataGrid wie this eins machen. Ich weiß nicht, wie man eine solche Zeile in XAML erstellt. Es sollte eingefroren werden, wenn ich durch die anderen Zeilen scrolle.wpf datagrid Gesamtreihe

Jemand hat gesagt, dass es möglich ist, der Datenquelle ein Gesamtelement hinzuzufügen und eine spezielle Vorlage für dieses Element zu erstellen. Aber das scheint ein bisschen komisch.

Ich fand keine funktionierende Lösung dafür. Hat jemand eine Idee wie man das macht?

+0

Sie könnten den Datagrid-Header erweitern. StackPanel und ein Label oder einen Textblock für die Summen einfügen? – Stuart

+0

@Stuart Großartig! Vielen Dank. Ich dachte nicht, dass es so einfach wäre und suchte nach den falschen Fragen. –

Antwort

0

Sie könnten Ihren TextBlock.Text an Ihren Wert binden. Um dies für alle Ihre Spalten können Sie den Content für Datagrid-Header ändern wie diese

<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> 

Alternativ tun es für jede Spalte, die Sie TextBlock.Text in Ihrer Header Vorlage ändern könnte eine Bindung

<TextBlock Text="{Binding}" TextWrapping="Wrap"/> 
zu verwenden

und dann Spalte wie diese

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

ich ein ähnliches Problem hatte, um es zu lösen aussehen würde habe ich ein Dock-Panel ein nd dockte das Data Grid an den Anfang. Ich erstellte dann ein horizontales Stackpanel mit einem Textfeld für jede Tabellenspalte und füllte sie mit den erforderlichen Summen, die dann am unteren Rand des Dockfensters angedockt wurden. Wenn die Datenraster ScrollViewer.VerticalScrollBarVisibility auf auto gesetzt sind, sind die Summenzeilen immer am unteren Rand des Datenrasters sichtbar und wenn das Datenraster für seinen Container zu groß wird, wird es in einen Scroll-Container (mit der Summenzeile immer noch sichtbar) eingeschlossen. .