En uno de mis proyectos, he heredado un ListView y he anulado el estilo estableciendo una nueva plantilla de control. También he anulado el estilo del encabezado de la columna. Hasta ahora he encontrado dos maneras de hacer esto:Establecer el estilo GridViewColumnHeader desde dentro de un estilo ListView
1) Al establecer una clave de estilo y haciendo referencia al estilo en el GridView:
<Style TargetType="{x:Type GridViewColumnHeader}" x:Key="MyHeaderStyle">
<Setter Property="Background" Value="Wheat" />
</Style>
<GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
2) Al no establecer una clave de estilo para el estilo anterior. Ahora no necesito hacer referencia al estilo en GridView, PERO también reemplaza TODOS los encabezados de lista de mi aplicación independientemente del tipo de vista de lista.
Dado que uso muchas listas de vista en mi aplicación, me gustaría lograr esto de una tercera y más flexible manera; configurando GridView.ColumnHeaderContainerStyle desde dentro de un estilo ListView. De esa forma no necesitaría hacer referencia al estilo de encabezado en cada GridView. Aquí es una versión simplificada de la XAML hasta ahora:
<Window.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" x:Key="MyHeaderStyle">
<Setter Property="Background" Value="Wheat" />
</Style>
<Style TargetType="{x:Type list:MyListView}">
<Setter Property="GridView.ColumnHeaderContainerStyle" Value="{StaticResource MyHeaderStyle}" />
<Setter Property="Background" Value="Linen" />
</Style>
</Window.Resources>
<list:MyListView>
<list:MyListView.View>
<GridView>
<GridViewColumn Header="Column1" />
<GridViewColumn Header="Column2" />
</GridView>
</list:MyListView.View>
</list:MyListView>
Esto, desafortunadamente, no establece el estilo de cabecera ... Si hago este cambio en el XAML anterior, funciona:
<GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
Cualquier ideas?