Я хочу изменить цвет фона заголовка Datagrid в Silverlight.Изменить цвет фона заголовка Datagrid в Silverlight
ответ
Хотя DataGrid не предоставляет свойство заголовка фона, он имеет свойство для ColumnHeaderStyle. Используя метод, который ранее предлагал DaniCE для одного столбца, мы можем заменить шаблон заголовка для всех столбцов заголовка, включая пустое пространство с правой стороны. Нижняя сторона с заменой всего шаблона для заголовка состоит в том, что мы теряем стрелки сортировки и разделители, которые присутствуют в шаблоне заголовка по умолчанию. К счастью, мы можем использовать template browser для извлечения используемого шаблона по умолчанию, а затем изменить его копию.
Здесь я собрал быстрый пример, который изменит фон заголовков столбцов на LightBlue, сохраняя разделители и сортировку. Взгляните на шаблон DataGridColumnHeader по умолчанию в template browser, чтобы узнать, как справиться с изменением фона, когда мышь наводится на 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>
Надеется, что это помогает!
Я придумал «чистое» решение. Надеюсь, это сработает для вас. Я просто переопределяю DataGrid, и я раскрыл метод GetTemplateChild. С его помощью вы можете получить доступ к DataGridColumnHeaderPresenter и DataGridColumnHeaders содержащиеся в нем ...
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) Изменение фона
DataGridEx сетки = новый DataGridEx();
... после того, как шаблон применяется ...
DataGridColumnHeadersPresenter OBJ = DataGrid.GetTemplateObject ("ColumnHeadersPresenter") в качестве DataGridColumnHeadersPresenter;
DataGridColumnHeader h = obj.Children [0] as DataGridColumnHeader;
h.Background = новый SolidColorBrush (Colors.Red);
- 1. Установите цвет фона DataGridHeaderBackground в Silverlight datagrid
- 2. Как изменить цвет фона datagrid
- 3. Как изменить цвет фона OnHover DataGrid Row?
- 4. Есть ли способ изменить выбранный цвет фона строки Silverlight DataGrid?
- 5. Silverlight datagrid columnheader изменить цвет шрифта
- 6. Silverlight 2 заголовка datagrid
- 7. Изменить цвет фона «DataGrid» в коде за
- 8. Изменить цвет фона заголовка в расширителе WPF
- 9. Изменить цвет фона заголовка (только) в UIAlertController
- 10. Как изменить цвет фона заголовка в wordpress?
- 11. Изменить цвет фона заголовка окна в DialogFragment
- 12. Как изменить цвет фона Silverlight DataGridRow?
- 13. Динамический ряд фона datagrid Silverlight
- 14. Как изменить цвет фона строки DataGrid?
- 15. Стиль заголовка datagrid silverlight
- 16. Изменить цвет фона DataGrid Cell Flex 4.6
- 17. Как изменить цвет фона для расширителя silverlight?
- 18. Как изменить WPF ListView заголовка цвет фона
- 19. Wpf изменить цвет фона заголовка детандер только
- 20. AMP: Как изменить цвет фона заголовка усилителя?
- 21. Как изменить цвет фона всплывающего заголовка?
- 22. jQGrid - изменить цвет фона заголовка группировки
- 23. wxpython: Как изменить цвет фона заголовка TreeListCtrl?
- 24. Изменить цвет фона заголовка модального twitter bootstrap
- 25. Изменить цвет фона заголовка при прокрутке страницы
- 26. Как изменить цвет фона заголовка jqGrid?
- 27. Строка DataGrid Цвет фона MVVM
- 28. Silverlight BusyIndicator Цвет фона
- 29. Цвет фона заголовка JTable
- 30. Silverlight 4 DataGrid стиль заголовка столбца
Это было очень полезно Дэвиду! – ScottG 2009-01-13 03:53:28