No estoy seguro si esto ayuda, pero uno de los enfoques que se han utilizado en el pasado para separar las columnas de sus cabeceras y presentarlas por separado.
Las definiciones de columna están definidos en los recursos:
<UserControl.Resources>
<ResourceDictionary>
<GridViewColumnCollection x:Key="siColumnCollection">
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
...
</DataTemplate>
</GridViewColumn.CellTemplate>
<GridViewColumnHeader Content="Fish"/>
</GridViewColumn>
...
A continuación, los encabezados y la vista de lista se presentan por separado, tanto en referencia al mismo recurso:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<GridViewHeaderRowPresenter Columns="{StaticResource siColumnCollection}"/>
<ListView Grid.Row="1" ItemsSource="{Binding ViewModelList}">
<ListView.Resources>
<DataTemplate x:Key="siNormalRowTemplate">
<GridViewRowPresenter Columns="{StaticResource siColumnCollection}"/>
</DataTemplate>
</ListView.Resources>
</ListView>
</Grid>
(no puedo prometer este XAML funciona exactamente como está escrito, pero te da la idea).
La ventaja de esta disposición es que puede tratar los encabezados y el cuerpo principal de la lista por separado. Entonces, si desea agregar algo de relleno inmediatamente después de GridViewHeaderRowPresenter, puede hacerlo.
Editar: Esta solución funciona si tiene un GridView, pero desafortunadamente no funciona para DataGrid. No veo una forma equivalente de dividir el encabezado y las filas en DataGrid, por lo que esta respuesta solo funcionará si está preparado para cambiar el DataGrid por un GridView. ¡Lo siento!
Esta fue la mejor opción de los dos, y yo podría poner un fondo degradado allí para que se vea como yo quería que . Pensé que había intentado esto, cambiando los antecedentes en DataGrid, pero descubrí que iba a anular en el último minuto para evitar que mis cambios tuvieran efecto. :) –
Genial. En caso de que te lo estés preguntando, puedes hacer un pincel con dos pinceles y sin gradiente entre los dos colocando dos paradas en el mismo lugar. Como se describe aquí: http://stackoverflow.com/questions/6546837/wpf-background-two-tone –