examples - ¿Cómo formateo los encabezados en una cuadrícula de datos de WPF?
wpf datagrid columns (3)
Estoy usando la WPF Datagrid de Codeplex.
Puedo diseñar las filas y con los siguientes atributos en el elemento dg: DataGrid.
Pero, ¿cómo doy estilo a los encabezados? Encuentro cientos de ejemplos en la web que definen Estilos y uso, por ejemplo, x: Key = "DataGridColumnHeaderStyle" en el elemento Datagrid, pero ninguno de ellos parece funcionar para mí.
¿Cómo puedo, por ejemplo, cambiar el fondo del encabezado de la cuadrícula de datos a naranja en este DataGrid?
<dg:DataGrid AlternatingRowBackground="#ddd"
RowBackground="#eee"
Name="theGrid1"
VerticalAlignment="Stretch"
AutoGenerateColumns="False"
BorderBrush="#ddd">
...
</dg:DataGrid>
El estilo en este caso se encuentra en un archivo llamado generic.xaml que debe colocarse en una carpeta de temas en su proyecto.
encuéntralo y ábrelo. dentro encontrarás esta línea que controla el fondo de los encabezados de las columnas
<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}">
básicamente está definido en otro lugar de la plantilla: esto explicará TemlateBinding para usted MSDN TemplateBinding
HTH, Eric
También hay una propiedad en DataGrid que permite diseñar el encabezado:
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="FontWeight"
Value="Bold" />
</Style>
</DataGrid.ColumnHeaderStyle>
Aquí hay otra muestra
<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>