在学习DataGrid的过程中,发现自定义DataGridColumnheader 会非常必要,而且可以自定以column 模板。
本例子主要是自定义了Column Header, 自定义Column 内容显示,可以对Column Header的排序和通过拖动header修改column的宽度.
1. 在xml 中添加如下资源
a. 带有箭头的datatemplate, 为用户点Header排序的时候可以显示不同的箭头
向上的箭头data template:
<DataTemplate x:Key="ColumHeaderArrowUp">
<DockPanel>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding}"></TextBlock>
<Path x:Name="PT" Stroke="Gray" Fill="SeaGreen" RenderTransformOrigin="0.5,.5">
<Path.RenderTransform>
<RotateTransform x:Name="RT" Angle="0"></RotateTransform>
</Path.RenderTransform>
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="3.5,3">
<LineSegment Point="0,9"></LineSegment>
<LineSegment Point="7,9"></LineSegment>
<LineSegment Point="3.5,3"></LineSegment>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
</DockPanel>
</DataTemplate>
向下的箭头 data template:
<DataTemplate x:Key="ColumHeaderArrowDown">
<DockPanel>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding}"></TextBlock>
<Path x:Name="PT" Stroke="Gray" Fill="SeaGreen" RenderTransformOrigin="0.5,0.5">
<Path.RenderTransform>
<RotateTransform x:Name="RT" Angle="180"></RotateTransform>
</Path.RenderTransform>
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="3.5,3">
<LineSegment Point="0,9"></LineSegment>
<LineSegment Point="7,9"></LineSegment>
<LineSegment Point="3.5,3"></LineSegment>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
</DockPanel>
</DataTemplate>
b. 添加数据资源
首先为XML增加如下namespace:
xmlns:Local="clr