Before telerik implemented this in their datagrid, I use a style to do this:
<style x:key="DataGridBaseHeaderStyle" targettype="dataprimitives:DataGridColumnHeader" xmlns:x="#unknown">
<setter property="FontWeight" value="Bold" />
</style>
<style x:key="MinMaxDayHeaderStyle" targettype="dataprimitives:DataGridColumnHeader" xmlns:x="#unknown">
BasedOn="{StaticResource DataGridBaseHeaderStyle}" >
<setter property="Foreground" value="#FF000000" />
<setter property="HorizontalContentAlignment" value="Left" />
<setter property="VerticalContentAlignment" value="Center" />
<setter property="IsTabStop" value="False" />
<setter property="SeparatorBrush" value="#FF96bbfd" />
<setter property="Padding" value="8" />
<setter property="Template">
<setter.value>
<controltemplate targettype="dataprimitives:DataGridColumnHeader">
<grid x:name="Root">
<grid.columndefinitions>
<columndefinition />
<columndefinition width="auto" />
</grid.columndefinitions>
<visualstatemanager.visualstategroups>
<visualstategroup x:name="CommonStates">
<visualstate x:name="Normal" />
<visualstate x:name="MouseOver">
<storyboard>
<coloranimation duration="0">
Storyboard.TargetName="BackgroundRectangle"
Storyboard.TargetProperty="(Fill).Color" To="#FF448DCA"/>
<coloranimation duration="0">
Storyboard.TargetName="BackgroundGradient"
Storyboard.TargetProperty="(Fill).(GradientStops)[3].Color" To="#7FFFFFFF"/>
<coloranimation duration="0">
Storyboard.TargetName="BackgroundGradient"
Storyboard.TargetProperty="(Fill).(GradientStops)[2].Color" To="#CCFFFFFF"/>
<coloranimation duration="0">
Storyboard.TargetName="BackgroundGradient"
Storyboard.TargetProperty="(Fill).(GradientStops)[1].Color" To="#F2FFFFFF"/>
</coloranimation></coloranimation></coloranimation></coloranimation></storyboard>
</visualstate>
<visualstate x:name="Pressed">
<storyboard>
<coloranimation duration="0">
Storyboard.TargetName="BackgroundRectangle"
Storyboard.TargetProperty="(Fill).Color" To="#FF448DCA"/>
<coloranimation duration="0">
Storyboard.TargetName="BackgroundGradient"
Storyboard.TargetProperty="(Fill).(GradientStops)[0].Color" To="#D8FFFFFF"/>
<coloranimation duration="0">
Storyboard.TargetName="BackgroundGradient"
Storyboard.TargetProperty="(Fill).(GradientStops)[1].Color" To="#C6FFFFFF"/>
<coloranimation duration="0">
Storyboard.TargetName="BackgroundGradient"
Storyboard.TargetProperty="(Fill).(GradientStops)[2].Color" To="#8CFFFFFF"/>
<coloranimation duration="0">
Storyboard.TargetName="BackgroundGradient"
Storyboard.TargetProperty="(Fill).(GradientStops)[3].Color" To="#3FFFFFFF"/>
</coloranimation></coloranimation></coloranimation></coloranimation></coloranimation></storyboard>
</visualstate>
</visualstategroup>
<visualstategroup x:name="SortStates">
<visualstate x:name="Unsorted" />
<visualstate x:name="SortAscending" />
<visualstate x:name="SortDescending" />
</visualstategroup>
</visualstatemanager.visualstategroups>
<rectangle x:name="BackgroundRectangle" fill="#FF1F3B53" stretch="Fill" grid.columnspan="2" />
<rectangle x:name="BackgroundGradient" stretch="Fill" grid.columnspan="2">
<rectangle.fill>
<lineargradientbrush endpoint=".7,1" startpoint=".7,0">
<gradientstop color="#FCc6defe" offset="0.015" />
<gradientstop color="#F7c6defe" offset="0.375" />
<gradientstop color="#E5c6defe" offset="0.6" />
<gradientstop color="#D1c6defe" offset="1" />
</lineargradientbrush>
</rectangle.fill>
</rectangle>
<grid>
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
<grid.rowdefinitions>
<rowdefinition height="20" />
<rowdefinition height="1" />
<rowdefinition height="20" />
</grid.rowdefinitions>
<grid.columndefinitions>
<columndefinition width="30" />
<columndefinition width="1" />
<columndefinition width="30" />
</grid.columndefinitions>
<contentpresenter content="{TemplateBinding Content}">
VerticalAlignment="Center" HorizontalAlignment="Center"
Grid.ColumnSpan="3" />
<rectangle fill="#FF96bbfd" verticalalignment="Stretch" height="1">
Visibility="Visible" Grid.Row="1" Grid.ColumnSpan="3" />
<contentpresenter content="Min" grid.row="2" verticalalignment="Center">
HorizontalAlignment="Center" />
<rectangle fill="#FF96bbfd" verticalalignment="Stretch" width="1">
Visibility="Visible" Grid.Row="2" Grid.Column="1" />
<contentpresenter content="Max" grid.row="2" grid.column="2">
VerticalAlignment="Center" HorizontalAlignment="Center" />
</contentpresenter></rectangle></contentpresenter></rectangle></contentpresenter></grid>
<rectangle x:name="VerticalSeparator" fill="#FF96bbfd">
VerticalAlignment="Stretch" Width="1" Visibility="Visible"
Grid.Row="1" Grid.Column="1"/>
</rectangle></grid>
</controltemplate>
</setter.value>
</setter>
</style>