Установить стиль GridViewColumnHeader из стиля ListView

В одном из моих проектов я унаследовал ListView и переопределил стиль, установив новый шаблон элемента управления. Я также переопределил стиль заголовка столбца. До сих пор я нашел два способа сделать это:

1) Установив ключ стиля и сославшись на стиль в GridView:

<Style TargetType="{x:Type GridViewColumnHeader}" x:Key="MyHeaderStyle">
    <Setter Property="Background" Value="Wheat" />
</Style>

<GridView ColumnHeaderContainerStyle="{StaticResource MyHeaderStyle}">

2) Не установив ключ стиля для указанного выше стиля. Теперь мне не нужно ссылаться на стиль в GridView, НО он также переопределяет ВСЕ заголовки listview в моем приложении независимо от типа listview.

Поскольку я использую много списков в своем приложении, я хотел бы сделать это третьим, более гибким способом; путем установки 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}">

Есть идеи?

6
задан Christian Myksvoll 4 January 2012 в 09:40
поделиться