WPF:仅将样式应用于包含其他tabControl的一个tabcontrol

时间:2015-03-09 14:59:58

标签: wpf xaml styles tabcontrol

在我的wpf应用程序中,我有一个包含另一个tabcontrol(child)的tabControl(父)。 我想将一个样式应用于父tabControl的tabItem而不影响子窗体。 我试过这个:

<TabControl x:Name="Parent" TabStripPlacement="Left" 
            ItemsSource="{Binding Path=ParentTabItems, Mode=OneWay}" >
    <TabControl.Resources>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}">
                        <!-- template is defined here-->
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style TargetType="{x:Type TabPanel}">
            <Setter Property="VerticalAlignment" Value="Center" />
        </Style>
    </TabControl.Resources>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <ContentPresenter>
                <ContentPresenter.Content>
                    <!--Here there is the child TabControl-->
                </ContentPresenter.Content>
            </ContentPresenter>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

但是这会将样式也应用于子tabControl TabItem。 如何将样式仅应用于父tabItem,使用应用程序中定义的默认样式保留子TabControl?

1 个答案:

答案 0 :(得分:1)

您应该可以使用TabControl.ItemContainerStyle在外Style的{​​{1}}上设置名为TabItem的{​​{1}}。试试这个:

TabControl

Resources

...

<Style x:Key="ItemStyle" TargetType="{x:Type TabItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TabItem}">
                <!-- template is defined here-->
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>