Silverlight에서 Datagrid 헤더의 배경색을 변경하고 싶습니다.Silverlight에서 Datagrid 헤더의 배경색을 변경하십시오.
답변
DataGrid는 머리글 배경 속성을 노출하지 않지만 ColumnHeaderStyle 속성이 있습니다. DaniCE가 이전에 단일 열에 제안한 기법을 사용하여 오른쪽의 빈 공간을 포함하여 모든 머리글 열에 대한 머리글 템플릿을 바꿀 수 있습니다. 헤더의 전체 템플리트를 바꾸는 단점은 기본 헤더 템플리트에있는 정렬 화살표와 구분 기호가 손실된다는 것입니다. 다행히도 template browser을 사용하여 기본 템플릿을 추출한 다음 해당 템플릿을 수정할 수 있습니다.
구분 기호 및 정렬을 유지하면서 열 머리글의 배경을 LightBlue로 변경하는 빠른 예제를 작성했습니다. template browser에있는 기본 DataGridColumnHeader 템플릿을 살펴보면 마우스가 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 메서드를 노출했습니다. 배경을
DataGridEx 그리드 = 새로운 DataGridEx 변경)
1) 재정의 데이터 그리드
/// <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);
}
}
이 ... 당신이 DataGridColumnHeaderPresenter 그 안에 포함 된 DataGridColumnHeaders에 액세스 할 수 있습니다를 사용하여(); 템플릿이 적용된 후
...DataGridColumnHeadersPresenter OBJ = DataGrid.GetTemplateObject DataGridColumnHeadersPresenter 등 ("ColumnHeadersPresenter");
DataGridColumnHeader h = obj.Children as [DataGridColumnHeader as];
h.Background = new SolidColorBrush (Colors.Red);
- 1. Winform ListView 헤더의 배경색을 변경하십시오.
- 2. VB6에서 ListView의 배경색을 변경하십시오.
- 3. 오브젝트의 배경색을 동적으로 변경하십시오.
- 4. UIImagePickerController의 배경색을 변경하십시오.
- 5. UITableview에서 섹션 헤더의 색상을 변경하십시오.
- 6. Datagrid Silverlight에서 선택된 행
- 7. Silverlight에서 DataGrid 정보 업데이트
- 8. "자세히"보기 컨트롤러의 배경색을 변경하십시오.
- 9. 테이블 변경 열의 배경색을 변경하십시오.
- 10. wp7 컨트롤의 컨트롤 배경색을 변경하십시오.
- 11. DataHeader의 선택에 따라 ColumnHeaderStyle의 배경색을 변경하십시오.
- 12. Silverlight에서 런타임에 단추 스타일을 변경하십시오.
- 13. Silverlight에서 래핑 된 행 DataGrid
- 14. 어떻게 헤더의 DataGrid TextColumn을 동적으로 변경합니까?
- 15. Silverlight에서 Textblock의 배경색을 변경하는 방법은 무엇입니까?
- 16. C++ 프로그램에서 다른 프로그램의 배경색을 변경하십시오.
- 17. JavaScript를 사용하여 입력 텍스트 필드의 배경색을 변경하십시오.
- 18. 월드 맵을 사용할 때 그림의 배경색을 변경하십시오.
- 19. SSRS 필드 표현을 사용하여 셀의 배경색을 변경하십시오.
- 20. IntPtr 핸들을 사용하여 Window 배경색을 변경하십시오.
- 21. Silverlight의 MouseOver/MouseEnter에서 HyperLinkButton의 배경색을 변경하십시오.
- 22. 블랙 베리에서 버튼을 선택한 경우 배경색을 변경하십시오.
- 23. PHP/SQL 출력에서 다른 DIV의 배경색을 변경하십시오.
- 24. DataGrid 행의 배경색을 동적으로 변경하는 방법은 무엇입니까?
- 25. Silverlight에서 보이는 DataGrid 행을 찾는 방법은 무엇입니까?
- 26. Silverlight에서 런타임에 textblock의 값을 기준으로 테두리의 배경색을 업데이트하는 방법은 무엇입니까?
- 27. 양식 배경색을 사용하지 않고 화면의 색조/채도를 변경하십시오.
- 28. Silverlight에서 편집 가능한 열 머리글을 만드는 방법 4 DataGrid?
- 29. Silverlight에서 내용을 프로그래밍 방식으로 설정 DataGrid 세부 정보
- 30. 날짜의 색을 변경하십시오.
David는 매우 도움이되었습니다. – ScottG
불행히도 이것은 헤더 텍스트를 정렬하지 않습니다. – user1034912