Quiero cambiar el color de fondo del encabezado Datagrid en Silverlight.Cambiar el color de fondo del encabezado Datagrid en Silverlight
Respuesta
Aunque DataGrid no expone una propiedad de Fondo de encabezado, sí tiene una propiedad para ColumnHeaderStyle. Usando la técnica que DaniCE ha sugerido previamente para una sola columna, podemos reemplazar la plantilla de encabezado para todas las columnas de encabezado, incluido el espacio vacío en el lado derecho. El inconveniente de reemplazar toda la plantilla por un encabezado es que perdemos las flechas de clasificación y los separadores que están presentes en la plantilla de encabezado predeterminada. Afortunadamente podemos usar un template browser para extraer la plantilla predeterminada que se está utilizando y luego modificar una copia de la misma.
Aquí he reunido un ejemplo rápido que cambiará el fondo de los encabezados de las columnas a LightBlue mientras mantiene los separadores y la clasificación. Eche un vistazo a la plantilla DataGridColumnHeader predeterminada en un template browser para ver cómo hacer frente a la modificación del Fondo cuando el mouse se cierne sobre el ColumnHeader.
DataGrid Header Background http://i34.tinypic.com/2q2ixch.jpg
<data:DataGrid x:Name="grid">
<data:DataGrid.ColumnHeaderStyle>
<Style
xmlns:primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"
xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
TargetType="primitives:DataGridColumnHeader" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="primitives:DataGridColumnHeader">
<Grid Name="Root">
<vsm:VisualStateManager.VisualStateGroups>
<vsm:VisualStateGroup x:Name="SortStates" >
<vsm:VisualStateGroup.Transitions>
<vsm:VisualTransition GeneratedDuration="00:00:0.1" />
</vsm:VisualStateGroup.Transitions>
<vsm:VisualState x:Name="Unsorted" />
<vsm:VisualState x:Name="SortAscending">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="Opacity" Duration="0" To="1.0" />
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="SortDescending">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="Opacity" Duration="0" To="1.0" />
<DoubleAnimation Storyboard.TargetName="SortIconTransform" Storyboard.TargetProperty="ScaleY" Duration="0" To="-.9" />
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
</vsm:VisualStateManager.VisualStateGroups>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Rectangle x:Name="BackgroundRectangle" Stretch="Fill" Fill="LightBlue" Grid.ColumnSpan="2" Grid.RowSpan="2" />
<ContentPresenter Grid.RowSpan="2" Content="{TemplateBinding Content}" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" />
<Rectangle Name="VerticalSeparator" Grid.RowSpan="2" Grid.Column="2" Width="1" VerticalAlignment="Stretch" Fill="{TemplateBinding SeparatorBrush}" Visibility="{TemplateBinding SeparatorVisibility}" />
<Path Grid.RowSpan="2" Name="SortIcon" RenderTransformOrigin=".5,.5" HorizontalAlignment="Left" VerticalAlignment="Center" Opacity="0" Grid.Column="1" Stretch="Uniform" Width="8" Data="F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z ">
<Path.Fill>
<SolidColorBrush Color="#FF444444" />
</Path.Fill>
<Path.RenderTransform>
<TransformGroup>
<ScaleTransform x:Name="SortIconTransform" ScaleX=".9" ScaleY=".9" />
</TransformGroup>
</Path.RenderTransform>
</Path>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</data:DataGrid.ColumnHeaderStyle>
</data:DataGrid>
Espero que esto ayude!
Se me ocurrió una solución "Limpia" ... Espero que funcione para usted. Simplemente anulo el DataGrid y expuse el método GetTemplateChild. El uso que se puede acceder al DataGridColumnHeaderPresenter y los DataGridColumnHeaders contenidas en ella ...
1) Anular cuadrícula de datos
/// <summary>
/// Extends the DataGrid so that it's possible to access the template objects
/// </summary>
public class DataGridEx : System.Windows.Controls.DataGrid
{
/// <summary>
/// Exposes Template items
/// </summary>
public Object GetTemplateObject(String name)
{
return this.GetTemplateChild(name);
}
}
2) Cambiar el fondo
DataGridEx rejilla = new DataGridEx();
... después se aplica la plantilla ...
DataGridColumnHeadersPresenter obj = DataGrid.GetTemplateObject ("ColumnHeadersPresenter") como DataGridColumnHeadersPresenter;
DataGridColumnHeader h = obj.Children [0] como DataGridColumnHeader;
h.Background = new SolidColorBrush (Colors.Red);
- 1. Encabezado de Silverlight DataGrid Alineación horizontal
- 2. Enlace de color de fila Silverlight DataGrid
- 3. C# Silverlight Datagrid - Fila Color Change
- 4. ¿Cómo puedo cambiar el color de fondo del encabezado de JTable?
- 5. ¿Cómo cambiar el color de fondo del teclado en iOS?
- 6. cambiar el color de fondo del diseño en Android
- 7. Cómo cambiar el color de fondo del encabezado de un QTableView
- 8. Cambiar el color de fondo en NSAttributedString
- 9. cambiar el color de fondo del elemento de navegación (barra)
- 10. Cambiar el color de fondo del menú de Android
- 11. Cambiar el color de fondo del panel de zedgraph
- 12. UISearchBar: cambiar el color de fondo del campo de entrada
- 13. Cambiar el color de fondo de NSButton
- 14. ¿Cómo cambiar el color de fondo del diálogo mediante programación?
- 15. ¿Cuál es el color de fondo del encabezado de la sección TableView predeterminado en el iPhone?
- 16. Cambiar el color de fondo del formulario con código hexadecimal
- 17. Android: Cambiar el color de fondo del fragmento
- 18. ¿Cómo cambiar el color de fondo de un bloque de texto en Silverlight?
- 19. Cambiar el color de fondo UIButton
- 20. xterm: cómo cambiar el color de fondo?
- 21. ¿Cómo puedo cambiar el color de una imagen en Silverlight/WP7 (máscara de color)?
- 22. Estilo WPF DataGrid-Silverlight DataGrid?
- 23. Cambiar el color de fondo y el color de fondo del texto en un cuadro de texto
- 24. Cambiar el color del texto en MoreNavigationController
- 25. ¿Cómo cambiar el color del texto de fondo y de fondo en la consola?
- 26. Cambiar el color de fondo de DateTimePicker en .NET
- 27. datagrid silverlight: vincula el estilo de cada fila
- 28. ggplot2 facet_grid() cambiar color de fondo
- 29. Configuración dinámica del texto de encabezado de una columna DataGrid de Silverlight
- 30. div color de fondo, para cambiar onhover
¡Eso fue extremadamente útil David! – ScottG
Lamentablemente esto no centra allign el texto del encabezado ... a pesar de que he intentado todo – user1034912