personalizar examples ejemplo columns wpf datagrid

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>