In uno dei miei progetti ho ereditato un controllo ListView e sovrascritto lo stile impostando un nuovo modello di controllo. Ho anche sostituito lo stile dell'intestazione della colonna. Finora ho trovato due modi per farlo:Impostare lo stile GridViewColumnHeader dall'interno di uno stile ListView
1) Impostando una chiave stile e fa riferimento lo stile nel GridView:
<Style TargetType="{x:Type GridViewColumnHeader}" x:Key="MyHeaderStyle">
<Setter Property="Background" Value="Wheat" />
</Style>
<GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
2) non impostando una chiave di stile per lo stile di cui sopra. Ora non ho bisogno di fare riferimento allo stile in GridView, ma sovrascrive TUTTE le intestazioni listview nella mia applicazione indipendentemente dal tipo listview.
Poiché utilizzo molte visualizzazioni di elenchi nella mia applicazione, mi piacerebbe farlo in un terzo e più flessibile modo; impostando GridView.ColumnHeaderContainerStyle da uno stile ListView. In questo modo non avrei bisogno di fare riferimento allo stile dell'intestazione in ogni GridView. Ecco una versione semplificata del XAML finora:
<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>
Questo, purtroppo, non imposta lo stile di intestazione ... Se faccio questa modifica al XAML sopra, funziona:
<GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
Qualsiasi idee?