2012-03-20 77 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

這些子頁面仍然不提供默認值,但提供示例。我爲一個喜歡鏈接到[這個問題](http://stackoverflow.com/questions/1559261/control-template-for-existing-controls-in-wpf)。 – 2012-03-21 18:29:23

+1

@ H.B。謝謝,我會嘗試開始使用該答案作爲默認模板問題,而不是MSDN示例。 – Rachel 2012-03-21 18:31:24