2014-12-17 15 views
5

Wpf veri kılavuzuna nasıl altbilgi satırı eklerim? Her sütunun toplamı için bir wpf datagrid satır eklemek zorunda kaldım, herhangi bir dll veya telerik kullanmak istemiyorum ve bunun gibi sadece microsoft bileşenlerini kullanıyorum.WPF veri kılavuzuna altbilgi satırı nasıl eklerim?

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

Ben de yerine TextBlock bir ızgara ekleyerek çalıştı, ancak datagrid sütunları yeniden boyutlandırma, onlar yeniden boyutlandırmak ve çok çirkin görünüyor olamaz: i olduğum bu şekilde yapmaya çalışıyoruz.

cevap

12

Bunu deneyin.

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

Sonucu enter image description here

+0

çalıştığını ancak 3 kayıtlar sonra ben sütun veya başlığının toplamını göstermek istiyorum yerine footer3 ait sum.suppose üzere toplam altbilgi bağlamak çok zordur o bağlayıcı değil. – Rahul

+0

bir ek özellik oluşturabilir ve toplam toplamı görüntüleyebilirsiniz. –