【问题标题】:DataGrid Columnheader Style - WPF C#DataGrid 列标题样式 - WPF C#
【发布时间】:2017-02-11 11:23:53
【问题描述】:

创建了两个独立的Datagrids;一个没有columnheader style,另一个有columnheader style

数据网格 1:

<DataGrid x:Name="PrintReport" ItemsSource="{Binding MonthlyResults}" AutoGenerateColumns="False" FontFamily="Tahoma" FontSize="12" IsReadOnly="True" CanUserSortColumns="False" HorizontalContentAlignment="Stretch"  VerticalContentAlignment="Stretch"  AlternatingRowBackground="Gainsboro"  AlternationCount="1" SelectionMode="Extended" SelectionUnit="Cell" >
  <DataGrid.Columns>
      <DataGridTextColumn Header="Pattern" Binding="{Binding }"   >
        <DataGridTextColumn.ElementStyle>
          <Style>
             <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
             <Setter Property="TextBlock.TextAlignment" Value="Center"/>
          </Style>
        </DataGridTextColumn.ElementStyle>
      </DataGridTextColumn>
      <DataGridTextColumn Header="Lease" Binding="{Binding VOD,StringFormat={}{0:0.00}}"  >
        <DataGridTextColumn.ElementStyle>
           <Style>
            <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
            <Setter Property="TextBlock.TextAlignment" Value="Center"/>
          </Style>
       </DataGridTextColumn.ElementStyle>
     </DataGridTextColumn>
  </DataGrid.Columns> 
</DataGrid>

数据网格 2:

 <DataGrid x:Name="PrintReport2" ItemsSource="{Binding MonthlyResults}" AutoGenerateColumns="False" FontFamily="Tahoma" FontSize="13" IsReadOnly="True" CanUserSortColumns="False" HorizontalContentAlignment="Stretch"  VerticalContentAlignment="Stretch"  AlternatingRowBackground="Gainsboro"  AlternationCount="1" SelectionMode="Extended" SelectionUnit="Cell">  

<DataGrid.Columns>
<DataGridTextColumn Header="Req - OAR" Binding="{Binding }"   >
<DataGridTextColumn.ElementStyle>


     <Style>
     <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
    <Setter Property="TextBlock.TextAlignment" Value="Center"/>
       </Style>
</DataGridTextColumn.ElementStyle>

    <DataGridTextColumn.HeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
        <Setter Property="Background" Value="LightCyan"/>
        </Style>
                                                            </DataGridTextColumn.HeaderStyle>
    </DataGridTextColumn>  

基本区别是DATAGRID 2 列标题应用了“background color”。我得到的显示如下所示:

Datagrid2 列标题在列标题下方显示“额外的空格”?如何删除它?

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    您正在覆盖 HeaderStyle。只需使用default style 并调整其他部分:

     <DataGridTextColumn.HeaderStyle>
          <Style TargetType="{x:Type DataGridColumnHeader}">
          <Setter Property="Background" Value="LightCyan"/>
          <Setter Property="Foreground" Value="#FF000000" />
          <Setter Property="HorizontalContentAlignment" Value="Left" />
          <Setter Property="VerticalContentAlignment" Value="Center" />
          <Setter Property="IsTabStop" Value="False" />
          <Setter Property="SeparatorBrush" Value="#FFC9CACA" />
          <Setter Property="Padding" Value="4" />
      </Style>
    </DataGridTextColumn.HeaderStyle>
    

    注意,关于额外空间,有效部分是Padding

    编辑 请注意,您可以使用 BasedOn 来继承默认样式。但是,要使其正常工作,您应该在 DataGrid 资源部分下声明它。见this answer

    【讨论】:

      猜你喜欢
      • 2016-01-03
      • 2011-02-20
      • 1970-01-01
      • 2012-10-19
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 2012-01-14
      相关资源
      最近更新 更多