2014-12-17 7 views
5

Come aggiungo una riga del piè di pagina in datagrid wpf? ho dovuto aggiungere una riga in un datagrid wpf per la somma di ogni colonna, non voglio usare alcuna dll o telerik e qualcosa del genere usa solo componenti Microsoft per fare ciò. io sono cerco di fare in questo modo:Come si aggiunge una riga del piè di pagina in un datagrid WPF?

<Style TargetType="{x:Type DataGrid}"> 
     <Setter Property="Foreground" 
     Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" /> 
     <Setter Property="BorderBrush"> 
      <Setter.Value> 
       <LinearGradientBrush EndPoint="0.5,1" 
         StartPoint="0.5,0"> 
        <GradientStop Color="{DynamicResource BorderLightColor}" 
        Offset="0" /> 
        <GradientStop Color="{DynamicResource BorderDarkColor}" 
        Offset="1" /> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="BorderThickness" 
     Value="1" /> 
     <Setter Property="RowDetailsVisibilityMode" 
     Value="VisibleWhenSelected" /> 
     <Setter Property="ScrollViewer.CanContentScroll" 
     Value="true" /> 
     <Setter Property="ScrollViewer.PanningMode" 
     Value="Both" /> 
     <Setter Property="Stylus.IsFlicksEnabled" 
     Value="False" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type DataGrid}"> 
        <Border x:Name="border" 
      SnapsToDevicePixels="True" 
      BorderBrush="{TemplateBinding BorderBrush}" 
      BorderThickness="{TemplateBinding BorderThickness}" 
      Padding="{TemplateBinding Padding}"> 
         <Border.Background> 
          <SolidColorBrush Color="{DynamicResource ControlLightColor}" /> 
         </Border.Background> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CommonStates"> 
           <VisualState x:Name="Disabled"> 
            <Storyboard> 
             <ColorAnimationUsingKeyFrames Storyboard.TargetName="border" 
              Storyboard.TargetProperty="(Panel.Background). 
        (SolidColorBrush.Color)"> 
              <EasingColorKeyFrame KeyTime="0" 
            Value="{DynamicResource ControlLightColor}" /> 
             </ColorAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="Normal" /> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <ScrollViewer x:Name="DG_ScrollViewer" 
        Focusable="false" 
        Background="Black"> 
          <ScrollViewer.Template> 
           <ControlTemplate TargetType="{x:Type ScrollViewer}"> 
            <Grid> 
             <Grid.ColumnDefinitions> 
              <ColumnDefinition Width="Auto" /> 
              <ColumnDefinition Width="*" /> 
              <ColumnDefinition Width="Auto" /> 
             </Grid.ColumnDefinitions> 
             <Grid.RowDefinitions> 
              <RowDefinition Height="Auto" /> 
              <RowDefinition Height="*" /> 
              <RowDefinition Height="Auto" /> 
              <RowDefinition Height="Auto" /> 
             </Grid.RowDefinitions> 

             <Button Focusable="false" 
         Command="{x:Static DataGrid.SelectAllCommand}" 
         Style="{DynamicResource {ComponentResourceKey 
        ResourceId=DataGridSelectAllButtonStyle, 
        TypeInTargetAssembly={x:Type DataGrid}}}" 
         Visibility="{Binding HeadersVisibility, 
        ConverterParameter={x:Static DataGridHeadersVisibility.All}, 
        Converter={x:Static DataGrid.HeadersVisibilityConverter}, 
        RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" 
         Width="{Binding CellsPanelHorizontalOffset, 
        RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" /> 

             <DataGridColumnHeadersPresenter x:Name="PART_ColumnHeadersPresenter" 
               Grid.Column="1" 
               Visibility="{Binding HeadersVisibility, 
        ConverterParameter={x:Static DataGridHeadersVisibility.Column}, 
        Converter={x:Static DataGrid.HeadersVisibilityConverter}, 
        RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" /> 

             <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" 
             Grid.ColumnSpan="2" 
             Grid.Row="1" 
             CanContentScroll="{TemplateBinding CanContentScroll}" /> 

             <ScrollBar x:Name="PART_VerticalScrollBar" 
         Grid.Column="2" 
         Grid.Row="1" 
         Orientation="Vertical" 
         ViewportSize="{TemplateBinding ViewportHeight}" 
         Maximum="{TemplateBinding ScrollableHeight}" 
         Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" 
         Value="{Binding VerticalOffset, Mode=OneWay, 
        RelativeSource={RelativeSource TemplatedParent}}"/> 
             <TextBlock Grid.Row="2" Grid.Column="1" Text="This is footer!"/> 
             <Grid Grid.Column="1" 
        Grid.Row="3"> 
              <Grid.ColumnDefinitions> 
               <ColumnDefinition Width="{Binding NonFrozenColumnsViewportHorizontalOffset, 
         RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" /> 
               <ColumnDefinition Width="*" /> 
              </Grid.ColumnDefinitions> 

              <ScrollBar x:Name="PART_HorizontalScrollBar" 
          Grid.Column="1" 
          Orientation="Horizontal" 
          ViewportSize="{TemplateBinding ViewportWidth}" 
          Maximum="{TemplateBinding ScrollableWidth}" 
          Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" 
          Value="{Binding HorizontalOffset, Mode=OneWay, 
        RelativeSource={RelativeSource TemplatedParent}}"/> 
             </Grid> 
            </Grid> 
           </ControlTemplate> 
          </ScrollViewer.Template> 
          <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
         </ScrollViewer> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <Trigger Property="IsGrouping" 
     Value="true"> 
       <Setter Property="ScrollViewer.CanContentScroll" 
      Value="false" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

Ho anche provato ad aggiungere una griglia al posto di blocco di testo, ma quando si ridimensionano le colonne di DataGrid, non possono ridimensionare e sembra molto brutto.

risposta

12

Prova questo.

<ScrollViewer VerticalAlignment="Top" HorizontalScrollBarVisibility="Auto"> 
    <StackPanel> 
     <DataGrid ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
      <DataGrid.Columns> 
       <DataGridTextColumn x:Name="Header1" Header="Header1"></DataGridTextColumn> 
       <DataGridTextColumn x:Name="Header2" Header="Header2"></DataGridTextColumn> 
       <DataGridTextColumn x:Name="Header3" Header="Header3"></DataGridTextColumn> 
      </DataGrid.Columns> 
      <TextBlock></TextBlock> 
      <TextBlock></TextBlock>       
     </DataGrid> 
     <StackPanel HorizontalAlignment="Left" Orientation="Horizontal"> 
      <Grid Width="{Binding ElementName=Header1,Path=ActualWidth}"> 
       <TextBlock Margin="5,0,0,0" Text="Footer1"></TextBlock> 
      </Grid> 
      <Grid Width="{Binding ElementName=Header2,Path=ActualWidth}"> 
       <TextBlock Text="Footer2" Margin="5,0,0,0"></TextBlock> 
      </Grid> 
      <Grid Width="{Binding ElementName=Header3,Path=ActualWidth}"> 
       <TextBlock Text="Footer3" Margin="5,0,0,0"></TextBlock> 
      </Grid> 
     </StackPanel> 
    </StackPanel> 
</ScrollViewer> 

Risultato enter image description here

+0

funziona, ma è molto difficile per legare il piè di pagina con un totale di sum.suppose invece di Footer3 voglio mostrare la somma totale della colonna o intestazione 3 record allora non è vincolante – Rahul

+0

è possibile creare una proprietà aggiuntiva e visualizzarne la somma totale. –

Problemi correlati