WPF:仅将样式应用于一个包含其他选项卡控件的选项卡控件



在我的wpf应用程序中,我有一个包含另一个tabcontrol(子控件)的tabControl(父级)。我想将样式应用于父选项卡控件的选项卡项,而不会影响子控件。我试过这个:

<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>

但这会导致将样式也应用于子选项卡控件选项卡项。如何将样式仅应用于父 tabItem 而使用应用程序中定义的默认样式离开子 TabControl?

您应该能够使用该TabControl.ItemContainerStyle在外部TabControlTabItem上设置命名Style。试试这个:

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>

<TabControl x:Name="Parent" TabStripPlacement="Left" 
    ItemsSource="{Binding Path=ParentTabItems, Mode=OneWay}" 
    ItemContainerStyle="{StaticResource ItemStyle}">
    <TabControl.Resources>
        <Style TargetType="{x:Type TabPanel}">
            <Setter Property="VerticalAlignment" Value="Center" />
        </Style>
    </TabControl.Resources>
</TabControl>

相关内容

  • 没有找到相关文章

最新更新