В одном из моих проектов я унаследовал ListView и переопределил стиль, установив новый шаблон элемента управления. Я также переопределил стиль заголовка столбца. До сих пор я нашел два способа сделать это:
1) Установив ключ стиля и сославшись на стиль в GridView:
<Style TargetType="{x:Type GridViewColumnHeader}" x:Key="MyHeaderStyle">
<Setter Property="Background" Value="Wheat" />
</Style>
<GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
2) Не устанавливая клавишу стиля для вышеуказанного стиля. Теперь мне не нужно ссылаться на стиль в GridView, НО он также переопределяет ВСЕ заголовки списка в моем приложении независимо от типа списка.
Поскольку я использую много списков в своем приложении, я хотел бы сделать это третьим и более гибким способом; установив GridView.ColumnHeaderContainerStyle изнутри стиля ListView. Таким образом, мне не нужно ссылаться на стиль заголовка в каждом GridView. Вот упрощенная версия XAML:
<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>
Это, к сожалению, не устанавливает стиль заголовка ... Если я сделаю это изменение в XAML выше, он будет работать:
<GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
Есть идеи?