Voglio cambiare il colore di sfondo dell'intestazione Datagrid in Silverlight.Cambia colore di sfondo di Datagrid Header in Silverlight
risposta
Sebbene DataGrid non esponga una proprietà Background dell'intestazione, ha una proprietà per ColumnHeaderStyle. Utilizzando la tecnica che DaniCE ha precedentemente suggerito per una singola colonna, possiamo sostituire il modello di intestazione per tutte le colonne di intestazione, compreso lo spazio vuoto sul lato destro. Il lato negativo che sostituisce l'intero modello per un'intestazione è che perdiamo le frecce e i separatori di ordinamento presenti nel modello di intestazione predefinito. Fortunatamente possiamo usare uno template browser per estrarre il modello predefinito utilizzato e quindi modificarne una copia.
Qui ho riunito un esempio rapido che cambierà lo sfondo delle intestazioni delle colonne in LightBlue mantenendo i separatori e l'ordinamento. Dai un'occhiata al template DataGridColumnHeader predefinito in un template browser per vedere come gestire la modifica dello sfondo quando il mouse passa su 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>
Spero che questo aiuti!
Mi è venuta una soluzione "pulita". Speriamo che funzioni per voi. Ho semplicemente sovrascritto il DataGrid e ho esposto il metodo GetTemplateChild. Con esso si può accedere al DataGridColumnHeaderPresenter ei DataGridColumnHeaders in esso contenuti ...
1) Override datagrid
/// <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) Cambiare lo sfondo
griglia DataGridEx = new DataGridEx();
... dopo l'applicazione del modello ...
DataGridColumnHeadersPresenter obj = DataGrid.GetTemplateObject ("ColumnHeadersPresenter") come DataGridColumnHeadersPresenter;
DataGridColumnHeader h = obj.Children [0] come DataGridColumnHeader;
h.Background = new SolidColorBrush (Colors.Red);
- 1. Silverlight DataGrid Header Allineamento orizzontale
- 2. cambia colore di sfondo
- 3. select2 cambia colore di sfondo
- 4. Gnuplot - cambia colore di sfondo
- 5. Cambia colore di sfondo e colore carattere
- 6. Cambia colore di sfondo 'correzioni' in eclissi
- 7. cambia sfondo UIAlertcontroller Colore
- 8. Cambia il colore di sfondo di NSButton
- 9. C# Silverlight Datagrid - Modifica colore riga
- 10. Cambia colore del testo in base al colore di sfondo
- 11. Android: cambia dinamicamente TextView Colore di sfondo
- 12. ActionBar Android non cambia colore di sfondo
- 13. Cambia colore di sfondo con ng-Style
- 14. Android: Cambia colore di sfondo del frammento
- 15. Cambia colore di sfondo con jQuery Mobile
- 16. Cambia colore di sfondo delle schede attive
- 17. Cambia colore di sfondo sull'applicazione console C#
- 18. Cambia azioneBar Colore sfondo dinamicamente
- 19. colore di sfondo Change Toolbar di programmazione non cambia Toolbar Titolo sfondo di colore
- 20. Cambia dinamicamente il colore di sfondo del widget in Tkinter
- 21. Pulsante Cambia Colore di sfondo tramite pattern MVVM in WPF
- 22. Cambia colore di sfondo del menu di Android
- 23. C# Cambia il colore di sfondo di un pulsante
- 24. datagrid silverlight - associazione dello stile di ogni riga
- 25. Silverlight Datagrid Row Click
- 26. Cambia cultura dell'applicazione Silverlight
- 27. Cambia colore di sfondo della vista tabella (stile tabella raggruppata)?
- 28. Jquery UI datepicker cambia colore di sfondo per un giorno
- 29. pygtk cambia colore di sfondo del widget gtkHBox
- 30. tasto Android cambia colore di sfondo dopo aver cliccato
Questo è stato estremamente utile David! – ScottG
Purtroppo questo non centrerà il testo dell'intestazione .. nonostante abbia provato tutto – user1034912