如何在wpf中更改单个tabitem的形状?

时间:2014-02-19 00:21:56

标签: wpf xaml

我有一个简单的界面,左侧有两个垂直标签。 我已经舍入了窗口和tabitems的边缘,但我想要最后一个标签(它恰好是第二个但我希望它就像那个,即使它是第五个或第十个)没有圆角。 下面是代码,希望你能理解我想要做的事情,因为我是新手。

    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 个答案:

答案 0 :(得分:1)

您可以通过将x:Key值设置为样式

来设置特定于标签项的样式
 <Style x:Key="TabItemRounded" TargetType="{x:Type TabItem}" >

现在仅将样式设置为 TabItemRounded ,以用于您想要该样式的标签

<TabControl >
    <TabItem Header="ABC" Style="{StaticResource TabItemRounded}"></TabItem>
    <TabItem Header="PQR"></TabItem>
</TabControl>