【问题标题】:How do I format headers on a WPF Datagrid?如何格式化 WPF Datagrid 上的标题?
【发布时间】:2009-02-03 12:34:13
【问题描述】:

我正在使用 Codeplex 的 WPF Datagrid。

我可以在 dg:DataGrid 元素中设置行和以下属性的样式。

但是如何设置标题的样式?我在网上找到了 100 个定义样式并使用例如的示例。 x:Key="DataGridColumnHeaderStyle" 在 Datagrid 元素中,但它们似乎都不适合我。

我怎么能只是例如将此 DataGrid 上的 Datagrid Header 背景更改为橙色?

<dg:DataGrid AlternatingRowBackground="#ddd" 
    RowBackground="#eee" 
    Name="theGrid1" 
    VerticalAlignment="Stretch" 
    AutoGenerateColumns="False" 
    BorderBrush="#ddd">
...
</dg:DataGrid>

【问题讨论】:

    标签: wpf datagrid


    【解决方案1】:

    DataGrid 上还有一个属性允许设置标题样式:

    <DataGrid.ColumnHeaderStyle>
         <Style TargetType="{x:Type DataGridColumnHeader}">
              <Setter Property="FontWeight"
                      Value="Bold" />
         </Style>
    </DataGrid.ColumnHeaderStyle>
    

    【讨论】:

      【解决方案2】:

      本例中的样式位于名为 generic.xaml 的文件中,它应该位于项目的主题文件夹中。

      找到并打开它。在里面你会发现控制列标题背景的这一行

       <dg:DataGridHeaderBorder SortDirection="{TemplateBinding SortDirection}"
                                           IsHovered="{TemplateBinding IsMouseOver}"
                                           IsPressed="{TemplateBinding IsPressed}"
                                           IsClickable="{TemplateBinding CanUserSort}"
                                           Background="{TemplateBinding Background}"
                                           BorderBrush="{TemplateBinding BorderBrush}"
                                           BorderThickness="{TemplateBinding BorderThickness}"
                                           Padding ="{TemplateBinding Padding}"
                                           SeparatorVisibility="{TemplateBinding SeparatorVisibility}"
      
      
                               SeparatorBrush="{TemplateBinding SeparatorBrush}">
      

      基本上它定义在模板的另一个地方: 这将向您解释 TemplateBinding MSDN TemplateBinding

      HTH, 埃里克

      【讨论】:

        【解决方案3】:

        这是另一个示例

          <DataGrid AutoGenerateColumns="False" Height="200" 
                          HorizontalAlignment="Left" Name="dgDownloads" 
                          VerticalAlignment="Top" Width="777"  
                          Background="Black" RowBackground="Gray"  Foreground="White"
                          AlternatingRowBackground="Gray" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
                    <DataGrid.Columns>
        
                        <DataGridTextColumn 
                        Header="{lex:LocTextExtension Key=Name, Dict=Resources, Assembly=PreShow.Player}"
                        Width="220"
                        IsReadOnly="True"
                        Binding="{Binding Filename}" >
                            <DataGridTextColumn.ElementStyle>
                                <Style TargetType="TextBlock">
                                    <Setter Property="TextWrapping" Value="Wrap"/>
                                </Style>
                            </DataGridTextColumn.ElementStyle>
                            <DataGridTextColumn.HeaderStyle>
                                <Style TargetType="{x:Type DataGridColumnHeader}">
                                    <Setter Property="FontWeight"  Value="Bold" />
                                    <Setter Property="Foreground"  Value="Yellow" />
                                    <Setter Property="Background"  Value="Black" />
                                </Style>
                            </DataGridTextColumn.HeaderStyle>
                        </DataGridTextColumn>
        
                        <DataGridCheckBoxColumn 
                          IsReadOnly="True"
                          Header="{lex:LocTextExtension Key=Success, Dict=Resources, Assembly=PreShow.Player}" 
                          Width="60"
                          Binding="{Binding IsSuccess}"
                          IsThreeState="False">
                            <DataGridCheckBoxColumn.HeaderStyle>
                                <Style TargetType="{x:Type DataGridColumnHeader}">
                                    <Setter Property="FontWeight"  Value="Bold" />
                                    <Setter Property="Foreground"  Value="Yellow" />
                                    <Setter Property="Background"  Value="Black" />
                                </Style>
                            </DataGridCheckBoxColumn.HeaderStyle>
                        </DataGridCheckBoxColumn>
        
                        <DataGridTemplateColumn Header="{lex:LocTextExtension Key=Time, Dict=Resources, Assembly=PreShow.Player}" IsReadOnly="True">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Downloaded}" Margin="4"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                            <DataGridTemplateColumn.HeaderStyle>
                                <Style TargetType="{x:Type DataGridColumnHeader}">
                                    <Setter Property="FontWeight"  Value="Bold" />
                                    <Setter Property="Foreground"  Value="Yellow" />
                                    <Setter Property="Background"  Value="Black" />
                                </Style>
                            </DataGridTemplateColumn.HeaderStyle>
                        </DataGridTemplateColumn>
        
                        <DataGridCheckBoxColumn 
                          IsReadOnly="True"
                          Header="{lex:LocTextExtension Key=IsDownloading, Dict=Resources, Assembly=PreShow.Player}" 
                          Width="60"
                          Binding="{Binding IsDownloading}"
                          IsThreeState="False">
                            <DataGridCheckBoxColumn.HeaderStyle>
                                <Style TargetType="{x:Type DataGridColumnHeader}">
                                    <Setter Property="FontWeight"  Value="Bold" />
                                    <Setter Property="Foreground"  Value="Yellow" />
                                    <Setter Property="Background"  Value="Black" />
                                </Style>
                            </DataGridCheckBoxColumn.HeaderStyle>
                        </DataGridCheckBoxColumn>
        
                        <DataGridHyperlinkColumn 
                            Header="URL" 
                            Width="Auto"
                            IsReadOnly="True"
                            Binding="{Binding Path=URL}"
                            TargetName="{Binding Path=URL}">
                            <DataGridHyperlinkColumn.ElementStyle>
                                <Style TargetType="TextBlock">
                                    <EventSetter Event="Hyperlink.Click" Handler="OnHyperlinkClick" />
                                </Style>
                            </DataGridHyperlinkColumn.ElementStyle>
                            <DataGridHyperlinkColumn.HeaderStyle>
                                <Style TargetType="{x:Type DataGridColumnHeader}">
                                    <Setter Property="FontWeight"  Value="Bold" />
                                    <Setter Property="Foreground"  Value="Yellow" />
                                    <Setter Property="Background"  Value="Black" />
                                </Style>
                            </DataGridHyperlinkColumn.HeaderStyle>
                        </DataGridHyperlinkColumn>
                    </DataGrid.Columns>
                </DataGrid>
        

        【讨论】:

        • 哦,lex:LocTextExtension!我最近想知道这件事有多受欢迎。 :)
        猜你喜欢
        • 2013-05-06
        • 1970-01-01
        • 2016-01-03
        • 2011-02-20
        • 2011-01-27
        • 1970-01-01
        • 2011-10-08
        • 2014-01-14
        • 1970-01-01
        相关资源
        最近更新 更多