Trong một trong các dự án của tôi, tôi đã kế thừa một ListView và ghi đè kiểu bằng cách đặt mẫu điều khiển mới. Tôi cũng đã ghi đè kiểu tiêu đề cột. Cho đến nay tôi đã tìm thấy hai cách để làm điều này:Đặt kiểu GridViewColumnHeader từ bên trong kiểu ListView
1) Bằng cách đặt một chìa khóa phong cách và tham khảo phong cách trong GridView:
<Style TargetType="{x:Type GridViewColumnHeader}" x:Key="MyHeaderStyle">
<Setter Property="Background" Value="Wheat" />
</Style>
<GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
2) Bằng cách không thiết lập một phím phong cách cho phong cách trên. Bây giờ tôi không cần phải tham khảo phong cách trong GridView, NHƯNG nó cũng ghi đè tất cả các tiêu đề listview trong ứng dụng của tôi độc lập với loại listview.
Vì tôi sử dụng nhiều lần xem danh sách trong ứng dụng của mình, tôi muốn thực hiện điều này theo cách thứ ba và linh hoạt hơn; bằng cách đặt GridView.ColumnHeaderContainerStyle từ bên trong một kiểu ListView. Bằng cách đó tôi sẽ không cần phải tham khảo kiểu tiêu đề trong mỗi GridView. Đây là một phiên bản đơn giản của XAML cho đến nay:
<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>
này tiếc là không thiết lập các phong cách tiêu đề ... Nếu tôi thực hiện thay đổi này đến XAML trên, nó hoạt động:
<GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">
Bất kỳ ý tưởng?