【问题标题】:How to change the color and formatting of column header row in datagrid?如何更改数据网格中列标题行的颜色和格式?
【发布时间】:2019-09-19 08:05:32
【问题描述】:

我尝试寻找解决方案,但大多数都已过时且目前不可用。例如

_dataGridView.ColumnHeadersDefaultCellStyle.BackColor = Color.Blue;

不再有 columnheadesdefaultcellstyle。

【问题讨论】:

    标签: wpf xaml datagridview wpfdatagrid


    【解决方案1】:

    对于 WPF DataGrid,可以设置一个 ColumnHeaderStyle,您可以在其中更改标题行的外观。

       <Style x:Key="FADataGridStyle" TargetType="{x:Type DataGrid}">
          <Setter Property="RowHeaderWidth" Value="0"/>
          <Setter Property="BorderBrush" Value="Transparent"/>
          <Setter Property="BorderThickness" Value="0"/>
          <Setter Property="GridLinesVisibility" Value="Horizontal"/>
          <Setter Property="HorizontalGridLinesBrush" Value="{StaticResource BackgroundColorBrush}"/>
          <Setter Property="ColumnHeaderStyle" Value="{DynamicResource FADataGridColumnHeaderStyle}"/>
          <Setter Property="SelectionUnit" Value="FullRow"/>
       </Style>
    
       <Style x:Key="FADataGridColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">
          <Setter Property="Height" Value="50"/>
          <Setter Property="FontSize" Value="14"/>
          <Setter Property="HorizontalAlignment" Value="Stretch"/>
          <Setter Property="HorizontalContentAlignment" Value="Center"/>
          <Setter Property="Background" Value="Blue"/>
          <Setter Property="Foreground" Value="White"/>
          <Setter Property="FontFamily" Value="{StaticResource ApplicationLightFont}"/>
          <Setter Property="BorderThickness" Value="0,0,0,1"/>
       </Style>
    

    现在在 XAML 数据网格定义中设置样式。 (注意 FADataGridStyle)

      <DataGrid AutoGenerateColumns="False"
                   CanUserAddRows="False"
                   CanUserSortColumns="True"
                   CanUserReorderColumns="True"
                   ItemsSource="{Binding Recordings}"
                   RowHeaderWidth="0"
                   SelectionMode="Single"
                   ScrollViewer.IsDeferredScrollingEnabled="True"
                   Background="{StaticResource SurfaceColorBrush}"
                   Style="{StaticResource FADataGridStyle}">
    

    我相信这符合您的要求。

    【讨论】:

      【解决方案2】:
      <DataGrid Grid.Column="1" Grid.Row="1" ItemsSource="{Binding ColTips.FilteredPayments}" AutoGenerateColumns="False" IsReadOnly="True">
                      <DataGrid.Columns>
                          <DataGridTextColumn Header="Date" Binding="{Binding Path=PaymentDate}">
                              <DataGridTextColumn.HeaderStyle>
                                  <Style TargetType="{x:Type DataGridColumnHeader}">
                                      <Setter Property="Background" Value="Red"></Setter>
                                  </Style>
                              </DataGridTextColumn.HeaderStyle>
                          </DataGridTextColumn>
      </DataGrid.Columns>
      </DataGrid>
      

      在这里,您可以通过在所需列上设置样式来内联。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-19
        • 1970-01-01
        • 2012-12-23
        • 1970-01-01
        • 2012-04-20
        • 2011-05-28
        • 2022-01-06
        • 2011-01-05
        相关资源
        最近更新 更多