2014-02-19 4 views
1

У меня есть простой интерфейс, который имеет две вкладки по вертикали с левой стороны. Я закруглял края окон и tabitems, но мне нужна последняя вкладка (это, случается, вторая, но мне хотелось бы, чтобы она, даже если она была пятой или десятой), не имела закругленных ребер. Вот код, надеюсь, вы поймете, что я пытаюсь сделать, потому что я новичок в этом.Как я могу изменить форму отдельного tabitem в wpf?

tle="MainWindow" Height="359" Width="504" Topmost="True" BorderThickness="0" WindowStyle="None" AllowsTransparency="True" BorderBrush="Black" Background="#0CFFFFFF"> 
<Window.Resources> 
    <LinearGradientBrush x:Key="SelectedBorderBrush" StartPoint="0,0" EndPoint="1,0" > 
     <GradientBrush.GradientStops> 
      <GradientStopCollection> 
       <GradientStop Color="Gray" Offset="0.965"/> 
       <GradientStop Color="WhiteSmoke" Offset="1.0"/> 
      </GradientStopCollection> 
     </GradientBrush.GradientStops> 
    </LinearGradientBrush > 
    <Style TargetType="{x:Type TabControl}" > 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabControl}"> 
        <DockPanel > 
         <Border 
         Panel.ZIndex="50" 
         Margin="0,10,-1,0" 
         Background="#FF0072C5" 
         BorderBrush="Gray" 
         CornerRadius="7,0,0,7" 
         BorderThickness="1"> 
          <TabPanel 
          Margin="0,0,0,0" 
          IsItemsHost="True" /> 
         </Border> 
         <Border 
         Background="WhiteSmoke" 
         BorderBrush="Gray" 
         BorderThickness="1" 
         CornerRadius="7,7,7,0" > 
          <ContentPresenter 
          ContentSource="SelectedContent" /> 
         </Border> 
        </DockPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
    <Style TargetType="{x:Type TabItem}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabItem}"> 
        <Grid> 
         <Border Name="Border" 
         Background="#FF0072C5" 
         CornerRadius="7,0,0,0" 
         BorderBrush="Gray" 
         BorderThickness="0,0,0,1" 
         Panel.ZIndex="50" 
         Margin="0,0,0,0" 
          > 

          <ContentPresenter x:Name="ContentSite"    
          VerticalAlignment="Center" 
          HorizontalAlignment="Center" 
          ContentSource="Header" 
          Margin="50,10,50,10"/> 
         </Border> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter Property="Panel.ZIndex" Value="100" /> 
          <Setter Property="Margin" Value="0,0,-2,0" /> 
          <Setter TargetName="Border" 
           Property="BorderBrush" 
           Value="{StaticResource SelectedBorderBrush}"/> 
          <Setter TargetName="Border" 
          Property="Background" 
          Value="WhiteSmoke" /> 
          <Setter TargetName="Border" 
          Property="CornerRadius" 
          Value="7,0,0,7" /> 
         </Trigger> 
         <Trigger Property="IsSelected" Value="False"> 
          <!--<Setter Property="Background" Value="Black" />--> 
          <Setter Property="Foreground" Value="White" /> 
         </Trigger> 
         <Trigger Property="IsSelected" Value="True"> 
          <!--<Setter Property="Background" Value="Black" />--> 
          <Setter Property="Foreground" Value="#FF0072C5" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 


</Window.Resources> 


<Grid > 
    <TabControl Name="_menuTabControl" TabStripPlacement="Left" Margin="10,0" BorderThickness="1" ClipToBounds="True" Height="359" VerticalAlignment="Top" > 



     <TabItem Name="_tabItem1" Header="Name1" BorderThickness="1" Margin="0"> 

      <Grid Width="334" Height="280" HorizontalAlignment="Stretch" Margin="0,25"> 
<!-- secret stuff here that i didnt copy :P --> 
</Grid> 

     </TabItem> 

     <TabItem Name="_tabItem2" Header="Name2" BorderThickness="1" Margin="0" > 

     </TabItem> 

    </TabControl> 
</Grid> 

ответ

1

Вы можете задать стиль, специфичные для вкладки элементов, давая х: Key значение стиля

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

Теперь установите стиль TabItemRounded только для вкладок, где вы хотите, что стиль

<TabControl > 
    <TabItem Header="ABC" Style="{StaticResource TabItemRounded}"></TabItem> 
    <TabItem Header="PQR"></TabItem> 
</TabControl> 
Смежные вопросы