2011-09-06 6 views
7

私はWPFタブコントロールを持っています。タブアイテムのスタイルを変更したいと思います。デフォルトのスタイルは正方形です。私はシェブロンリストのようにする必要があります。それぞれのブロックは六角形である。シェブロンリストとしてWPFタブコントロールを作成するには?

EDIT: Please see the attached image

+0

あなたが望むものはあまり明確ではありません...スケッチを投稿できますか? –

+0

添付の画像をご覧ください。 – Relativity

答えて

14

はここKaxamlで作られた簡単な例です:

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Page.Resources> 
    <Style x:Key="chevronTabItemStyle" TargetType="{x:Type TabItem}"> 
     <Setter Property="Foreground" Value="White" /> 
     <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TabItem}"> 
      <StackPanel Orientation="Horizontal" Margin="0,0,-7,0" Height="30"> 
       <Path Data="M0,0 10,0 10,30 0,30 10,15" 
        Fill="{TemplateBinding Background}"/> 
       <Grid> 
       <Rectangle Fill="{TemplateBinding Background}" /> 
       <TextBlock Text="{TemplateBinding Header}" Margin="10,5" VerticalAlignment="Center" /> 
       </Grid> 
       <Path Data="M0,0 10,15 0,30" 
        Fill="{TemplateBinding Background}" />     
      </StackPanel> 
      </ControlTemplate> 
     </Setter.Value> 
     </Setter> 
    </Style> 
    </Page.Resources> 
    <Grid> 
    <TabControl ItemContainerStyle="{StaticResource chevronTabItemStyle}"> 
     <TabItem Header="Design" Background="DarkSlateBlue" /> 
     <TabItem Header="Plan" Background="DarkCyan" /> 
     <TabItem Header="Build" Background="LightSkyBlue" /> 
     <TabItem Header="Test" Background="SandyBrown" /> 
     <TabItem Header="Evaluate" Background="SteelBlue" /> 
    </TabControl> 
    </Grid> 
</Page> 

あなたはおそらく、いくつかのプロパティを調整する必要がありますが、それはあなたが説明したものをざっとだ...

enter image description here

+0

+1、とても素敵な答え! –

+0

うわー、とてもいいです - これは私が探しているものに完璧に見えます。本当にしっかりしたベースを提供してくれてありがとう! – Steoates

3

Thomas Levesqueあなたの答えは美しいです!

前景色と少し問題があり、のTextBlockにプロパティを移動するには、プロパティIsEnableまたは選択が評価されるならば、我々は、ヘッダーの色を変更することができます。このように

ホワイト着色するために、すべてのタブを防ぎます。

<Style x:Key="TestNewTabStyle" TargetType="{x:Type TabItem}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabItem}">       
        <StackPanel Orientation="Horizontal" Margin="0,0,-7,0" Height="30"> 
         <Path Data="M0,0 10,0 10,30 0,30 10,15" Fill="{TemplateBinding Background}"/> 
         <Grid > 
          <Rectangle Fill="{TemplateBinding Background}" /> 
          <TextBlock Name="HeaderArrow" Text="{TemplateBinding Header}" Margin="15,5" VerticalAlignment="Center" Foreground="White"**/> 
         </Grid> 
         <Path Data="M0,0 10,15 0,30" Fill="{TemplateBinding Background}" /> 
        </StackPanel> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter TargetName="HeaderArrow" Property="FontWeight" Value="Bold" /> 
          <Setter TargetName="HeaderArrow" Property="Foreground" Value="Yellow" /> 
         </Trigger> 
         <Trigger Property="IsEnabled" Value="False"> 
          <Setter TargetName="HeaderArrow" Property="Foreground" Value="DarkGray" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style>