2017-06-05 114 views
-2

我想在一个wpf数据网格中创建一个总行,如 this之一。 我不知道如何在xaml中创建这样的行。当我滚动其他行时,它应该被冻结。wpf datagrid总行

有人说可以将总项目添加到数据源并为该项目创建一个特殊模板。但是这似乎有点奇怪。

我发现没有工作解决方案。有人有一个想法如何做到这一点?

+0

您可以扩展数据网格标题。 StackPanel并为其中的总计添加标签或文本块? – Stuart

+0

@Stuart太棒了!谢谢。我没有想到这会很容易,并寻找错误的问题。 –

回答

0

您可以将TextBlock.Text绑定到您的值。要对所有的列都这样做,你可以改变的ContentTemplate您DataGrid标题这样

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

另外,这样做对,你可以在你的Header模板使用结合

<TextBlock Text="{Binding}" TextWrapping="Wrap"/> 
改变 TextBlock.Text每列

,然后你的专栏看起来像这样

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

我有一个类似的问题,要解决它,我创建了一个船坞面板nd停靠在数据网格顶端。然后,我为每个表格列创建了一个带有文本框的水平堆栈面板,并将它们填入所需的总计,然后停靠在停靠面板的底部。将数据网格ScrollViewer.VerticalScrollBarVisibility设置为auto时,总计行始终在数据网格的底部可见,并且如果数据网格对于其容器而言变大,则会将其包装在滚动容器中(总计行仍可见) 。