5

我正在使用 Codeplex 的 WPF Datagrid。

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

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

我怎样才能在这个 DataGrid 上将 Datagrid Header 背景更改为橙色?

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

3 回答 3

13

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

<DataGrid.ColumnHeaderStyle>
     <Style TargetType="{x:Type DataGridColumnHeader}">
          <Setter Property="FontWeight"
                  Value="Bold" />
     </Style>
</DataGrid.ColumnHeaderStyle>
于 2010-11-09T21:19:30.307 回答
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,埃里克

于 2009-02-03T12:56:05.503 回答
0

这是另一个示例

  <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>
于 2012-01-26T17:40:18.813 回答