2012-03-16 46 views
3

有誰知道爲什麼TabControl的填充屬性不能用經典主題呈現,但適用於luna主題?TabControl填充不適用於經典主題

Classic

Luna

的XAML是非常基本的。我已經做了左填充50,以便在屏幕截圖中顯示問題。

<!-- Tab control styling --> 
     <Style TargetType="{x:Type TabControl}"> 
      <Setter Property="BorderBrush" Value="Black" /> 
      <Setter Property="BorderThickness" Value="1,1,1,1" /> 
      <Setter Property="Padding" Value="50,5,10,5" /> 
      <Setter Property="Margin" Value="3.5" /> 
      <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}" /> 
     </Style> 

有什麼關於我的思念如經典主題所有填充都被忽略?

回答

4

使用工具ShowMeTheTemplateMicrosoft Expression Blend之一,您可以檢查Microsoft爲不同主題默認實現的控件模板。

對於Windows經典的的TabControl的控件模板看起來是這樣的:

<ControlTemplate TargetType="{x:Type TabControl}"> 
    <Grid ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local"> 
     ... 
     <TabPanel .../> 
     <Grid ...> 
      <Microsoft_Windows_Themes:ClassicBorderDecorator ...> 
       <ContentPresenter x:Name="PART_SelectedContentHost" Margin="2,2,2,2" .../> 
      </Microsoft_Windows_Themes:ClassicBorderDecorator> 
     </Grid> 
    </Grid> 
    <ControlTemplate.Triggers> 
     ... 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

對於露娜,它是這樣的:

<ControlTemplate TargetType="{x:Type TabControl}"> 
    <Grid ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local"> 
     ... 
     <TabPanel .../> 
     <Border ...> 
      <ContentPresenter x:Name="PART_SelectedContentHost" Margin="{TemplateBinding Padding}" .../> 
     </Border> 
    </Grid> 
    <ControlTemplate.Triggers> 
     ... 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

在月神,在的TabControl的填充勢必保證金ContentPresenter的;在Windows經典中,邊距設置爲2.

我個人認爲這是一個錯誤。您可能想要創建一個關於http://connect.microsoft.com/的錯誤報告。

作爲一種變通方法,你可以定義自己的內容模板:

<TabControl> 
    <TabControl.ContentTemplate> 
     <DataTemplate> 
      <ContentPresenter Content="{Binding}" Margin="50,5,10,5"/> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 
    ... 
<TabControl>