silverlight - texto - dar formato a un datagridview c#
Cambiar el color de fondo del encabezado Datagrid en Silverlight (2)
Se me ocurrió una solución "Limpia". Espero que funcione para usted. Simplemente anulo el DataGrid y expuse el método GetTemplateChild. Utilizándolo, puede acceder al DataGridColumnHeaderPresenter y a DataGridColumnHeaders contenidos en él ...
1) Anular la 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 grid = new DataGridEx ();
... después de aplicar la plantilla ...
DataGridColumnHeadersPresenter obj = DataGrid.GetTemplateObject ("ColumnHeadersPresenter") como DataGridColumnHeadersPresenter;
DataGridColumnHeader h = obj.Children [0] como DataGridColumnHeader;
h.Background = new SolidColorBrush (Colors.Red);
Quiero cambiar el color de fondo del encabezado Datagrid en Silverlight.
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 utilizar un navegador de plantillas 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 navegador de plantilla para ver cómo tratar la modificación del Fondo cuando el mouse se desplaza sobre ColumnHeader.
Fondo del encabezado DataGrid 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!