xaml - xaml: 仅对包含其他tabControl的一个tabControl应用样式

  显示原文与译文双语对照的内容
95 1

在我的wpf应用程序中,有一个 tabControl ( 父级),它包含另一个 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 。如何才能使用应用程序中定义的默认样式将样式应用于保留子oab的父 rtc?

时间:原作者:0个回答

135 1

你应该能够使用 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>
原作者:
...