Tôi muốn thay đổi màu nền của tiêu đề Datagrid trong Silverlight.Thay đổi màu nền của Tiêu đề dữ liệu trong Silverlight
Trả lời
Mặc dù DataGrid không hiển thị thuộc tính Nền đầu trang, nhưng nó có thuộc tính cho ColumnHeaderStyle. Sử dụng kỹ thuật mà DaniCE đã đề xuất trước đây cho một cột đơn, chúng tôi có thể thay thế mẫu tiêu đề cho tất cả các cột tiêu đề bao gồm khoảng trống ở phía bên tay phải. Phía dưới cùng với việc thay thế toàn bộ khuôn mẫu cho tiêu đề là chúng ta mất các mũi tên sắp xếp và dấu phân tách có mặt trong mẫu tiêu đề mặc định. May mắn là chúng ta có thể sử dụng template browser để trích xuất mẫu mặc định đang được sử dụng và sau đó sửa đổi một bản sao của nó.
Ở đây tôi đã cùng nhau đưa ra một ví dụ nhanh sẽ thay đổi nền của các tiêu đề cột thành LightBlue trong khi vẫn giữ các dấu phân tách và sắp xếp. Hãy xem mẫu DataGridColumnHeader mặc định trong một template browser để xem cách xử lý việc sửa đổi Nền khi chuột di chuột qua 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>
Hope this helps!
Tôi đã đưa ra giải pháp "Sạch". Hy vọng nó phù hợp với bạn. Tôi chỉ đơn giản là ghi đè lên DataGrid và tôi tiếp xúc với phương thức GetTemplateChild. Sử dụng nó, bạn có thể truy cập vào DataGridColumnHeaderPresenter và DataGridColumnHeaders chứa trong nó ...
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) Thay đổi nền
DataGridEx lưới = new DataGridEx();
... sau khi mẫu được áp dụng ...
DataGridColumnHeadersPresenter obj = DataGrid.GetTemplateObject ("ColumnHeadersPresenter") như DataGridColumnHeadersPresenter;
DataGridColumnHeader h = obj.Children [0] dưới dạng DataGridColumnHeader;
h.Background = new SolidColorBrush (Colors.Red);
- 1. Thay đổi màu nền của tiêu đề Danh sách WinView
- 2. Cách thay đổi màu nền tiêu đề của một QTableView
- 3. Thay đổi màu nền thanh tiêu đề WPF
- 4. Thay đổi màu của phần tiêu đề trong UITableview
- 5. Thay đổi màu nền trên hàng, nhưng không thay đổi tiêu đề hàng
- 6. UITableView tiêu đề thay đổi tiêu đề màu
- 7. Làm cách nào để thay đổi màu nền tiêu đề của JTable?
- 8. Làm cách nào để thay đổi màu nền của tiêu đề ActionBar?
- 9. thay đổi màu nền
- 10. Thay đổi màu nền của ô intellij
- 11. Thay đổi màu của ô dữ liệu datagridview động
- 12. C# Silverlight Datagrid - Thay đổi màu của hàng
- 13. Thay đổi màu nền của tab ActionBar
- 14. Thay đổi màu nền của một NSCollectionView
- 15. Làm cách nào để thay đổi màu của hình ảnh trong silverlight/WP7 (Mặt nạ màu)?
- 16. Thay đổi màu nền của CGContext
- 17. Cách thay đổi màu của thanh tiêu đề không có chủ đề
- 18. Thay đổi màu nền ActionBarSherlock
- 19. Thay đổi Navigationbar màu (màu nền)
- 20. Cách thay đổi tiêu đề của tiêu đề của QTableView
- 21. Thay đổi màu nền UIButton
- 22. Thay đổi Màu dữ liệu Dòng dữ liệu WPF
- 23. select2 thay đổi màu nền
- 24. Animate UIButton của tiêu đề thay đổi
- 25. Thay đổi màu tiêu đề chính của điều hướng trong MFMailComposeViewController
- 26. Màu nền của giao diện người dùng Jquery thay đổi màu nền trong một ngày
- 27. làm thế nào để thay đổi màu nền của viewController trong mục tiêu-c
- 28. Thay đổi màu nền của nhãn trong C#
- 29. Thay đổi màu nền của ScrollBar trong ScrollViewer WPF
- 30. thay đổi màu nền của bố cục trong Android
Đó là David vô cùng hữu ích! – ScottG
Thật không may điều này không trung tâm allign văn bản tiêu đề .. mặc dù tôi đã cố gắng tất cả mọi thứ – user1034912