2009-02-03 4 views
4

Я использую WPF Datagrid из Codeplex.Как форматировать заголовки в WPF Datagrid?

Я могу стилизовать строки и со следующими атрибутами в элементе dg: DataGrid.

Но как мне стиль заголовков? Я нахожу 100 примеров в Интернете, которые определяют стили и используют, например. x: Key = "DataGridColumnHeaderStyle" в элементе Datagrid, но ни один из них не работает для меня.

Как я могу просто напр. измените фон заголовка Datagrid на оранжевый на этом DataGrid?

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

ответ

1

Стиль в этом случае в файле с именем Generic.xaml следует loacted в themems папку в вашем проекте.

найти и открыть его. внутри вы найдете эту строку, которая управляет фон заголовков столбцов

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

в основном его определяется в другом месте в шаблоне: это объяснить TemlateBinding вам MSDN TemplateBinding

НТН, Эрик

8

Существует также свойство DataGrid, которое позволяет моделировать заголовок:

<DataGrid.ColumnHeaderStyle> 
    <Style TargetType="{x:Type DataGridColumnHeader}"> 
      <Setter Property="FontWeight" 
        Value="Bold" /> 
    </Style> 
</DataGrid.ColumnHeaderStyle> 
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> 
+0

Oh, Лекса: LocTextExtension! Недавно мне стало интересно, насколько популярна эта вещь. :) – vines