Стилизация TabItem при заполнении ItemsSource - PullRequest
2 голосов
/ 05 марта 2010

Я использую WPF Tabcontrol, заполненный коллекцией с использованием Itemssource.

<TabControl x:Name="_tabControl" ItemsSource="{Binding TabViewModelList}">
            <TabControl.ItemContainerStyle>
                    <Style TargetType="TabItem">
                        <Setter Property="Header" Value="{Binding TabCaption}"/>
                    <Setter Property="Content" Value="{Binding TabContent}"/>
                    <Setter Property="IsSelected" Value="{Binding IsDefault}"/>
                </Style>
                </TabControl.ItemContainerStyle>
            </TabControl>

Теперь я хочу установить свой стиль TabItem в своем App.xaml (или другом файле ресурсов) следующим образом:

<Style TargetType="{x:Type TabItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}">
                        <Grid>
                            <Border
             Name="Border"
             Background="LightBlue"
             BorderBrush="Black"
             BorderThickness="1,1,1,1"
             CornerRadius="6,6,0,0" >
                                <ContentPresenter x:Name="ContentSite"
               VerticalAlignment="Center"
               HorizontalAlignment="Center"
               ContentSource="Header"
               Margin="12,2,12,2"/>
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="Border" Property="Background" Value="LightBlue" />
                            </Trigger>
                            <Trigger Property="IsSelected" Value="False">
                                <Setter TargetName="Border" Property="Background" Value="LightGray" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

.. но ItemContainerStyle, конечно, переопределяет шаблон управления.

Как мне объединить эти два, чтобы я мог динамически загружать свой tabcontrol и по-прежнему иметь возможность стилизовать мои TabItems так, как я хочу?

1 Ответ

1 голос
/ 05 марта 2010

Хорошо ... Решил мою собственную проблему. Довольно очевидно ..

Именовал мой шаблон

<Style TargetType="{x:Type TabItem}" x:Key="TabItemTemplate">

Добавлено свойство BasedOn, например:

<Style TargetType="TabItem" BasedOn="{StaticResource TabItemTemplate}">

Но если бы я мог объединить их в один шаблон, пожалуйста, дайте мне знать ...

...