2012-03-20 23 views
2

は、私は次のコードを持っている:TabItem - テンプレートを変更し、既定のスタイルを残す方法?

<Window x:Class="kkk.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <Style x:Key="tabitemstyle" TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type TabItem}"> 
         <Grid> 
          <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> 
           <ContentPresenter x:Name="ContentSite" ContentSource="Header"></ContentPresenter> 
          </Border> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Window.Resources> 
    <Grid> 

     <TabControl> 
      <TabItem Header="tab1" Style="{StaticResource tabitemstyle}"></TabItem> 
      <TabItem Header="tab1" Style="{StaticResource tabitemstyle}"></TabItem> 
     </TabControl> 

    </Grid> 
</Window> 

私はのTabItemのデフォルトのスタイルを維持したい - 私はパディング/マージンを意味/ BorderBrush/BorderThicknessを、私はBasedOn="..."を書いた理由ように...それはあります。 しかし、それは動作しません - 私はカスタムスタイルなしでTabItemと同じレンダリングすると思ったが、そうではありません - (ContentPresenterによって)いくつかのテキストをレンダリングします。スタイルは、デフォルトのプロパティ値を取得しません...どのように私はそれを行うことができますか? そして、私は自分のスタイル内部ControlTemplateを必要とする...

答えて

2

あなたがデフォルトTabItem.Templateに基づいてテンプレートを作成したい場合は、オブジェクト

を描画する方法WPFを告げるものですTabItem.Template、上書きされていますMSDNからdefault templateを入手して、必要に応じて変更することができます。

+1

これらのサブページは、デフォルト値ではなく例を提供しています。私は1つの[この質問](http://stackoverflow.com/questions/1559261/control-template-for-existing-controls-in-wpf)にリンクすることを好むために。 –

+1

@ H.B。ありがとう、私はしようとMSDNの例ではなく、デフォルトのテンプレートの質問にその答えを使用して開始します。 – Rachel

関連する問題