2009-10-02 8 views
1

Je travaille sur le style d'un TabControl sur un PC runnnig Windows 7 et tout avait l'air bien, mais quand j'ai essayé de l'exécuter dans Windows XP, je reçois une bordure blanche autour du hideux TabControl:WPF TabControl XP Styling Problème

alt text

Je crois que ce problème est le même combat avec luna (décrit ici TabControl without border wpf (XP)), mais je suis à une perte de ce qu'il faut changer dans le modèle ...

le style pour le TabControl est aussi suit:

<Style TargetType="{x:Type TabItem}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabItem}"> 
        <Grid> 
         <Border Name="Border" Margin="0,10,0,-10" BorderBrush="Transparent" BorderThickness="1,1,0,0" CornerRadius="5,0,0,5"> 
          <Border.Background> 
           <LinearGradientBrush EndPoint="1.407,0.5" StartPoint="-0.407,0.5"> 
            <GradientStop Color="#49000000" Offset="0"/> 
            <GradientStop Offset="1" Color="#09FFFFFF"/> 
           </LinearGradientBrush> 
          </Border.Background> 
          <ContentPresenter x:Name="ContentSite" 
               TextBlock.FontSize="15" 
               TextBlock.Foreground="#22ffffff" 
               VerticalAlignment="Center" 
               HorizontalAlignment="Center" 
               ContentSource="Header" 
               Margin="5,5,2,5" 
               RecognizesAccessKey="True"> 
           <ContentPresenter.LayoutTransform> 
            <RotateTransform Angle="270" /> 
           </ContentPresenter.LayoutTransform> 
          </ContentPresenter> 
         </Border> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter Property="Panel.ZIndex" Value="100" /> 
          <Setter TargetName="Border" Property="Background" Value="Red" /> 
          <Setter TargetName="Border" Property="BorderThickness" Value="1,1,0,0" /> 
          <Setter TargetName="ContentSite" Property="TextBlock.Foreground" Value="White"/> 
         </Trigger> 
         <Trigger Property="IsEnabled" Value="False"> 
          <Setter TargetName="Border" Property="Background" Value="DarkRed" /> 
          <Setter TargetName="Border" Property="BorderBrush" Value="Black" /> 
          <Setter Property="Foreground" Value="DarkGray" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

et XAML (de rien de fantaisie) la TabControl réelle:

<TabControl Grid.Row="1" Grid.Column="0" Margin="5,5" TabStripPlacement="Left" 
       Background="Transparent" HorizontalAlignment="Stretch" BorderThickness="0,0,0,0"> 
     <TabControl.BitmapEffect> 
      <DropShadowBitmapEffect Color="Black" Direction="270"/> 
     </TabControl.BitmapEffect> 

     <TabItem Header="Tab Item 1"/> 
     <TabItem Header="Tab Item 2"/> 
     <TabItem Header="Tab Item 3"/> 
     <TabItem Header="Tab Item 4"/> 
    </TabControl> 

toute aide serait grandement appréciée!

Répondre

2

trouvé une solution, méthode normale - tirer un contrôle simple Styled en mélange à part :)

Voici le style que je devais ajouter à supprimer cette frontière au cas où quelqu'un est intéressé:

<Style TargetType="{x:Type TabControl}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabControl}"> 
        <Grid KeyboardNavigation.TabNavigation="Local"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="33"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <TabPanel Grid.Column="0" Margin="0,0,4,-1" x:Name="HeaderPanel" Background="Transparent" IsItemsHost="True" Panel.ZIndex="1" KeyboardNavigation.TabIndex="1"/> 
         <Border Grid.Column="1" x:Name="Border" Background="{DynamicResource WindowBackgroundBrush}" BorderBrush="{DynamicResource SolidBorderBrush}" BorderThickness="0" CornerRadius="2" KeyboardNavigation.DirectionalNavigation="Contained" KeyboardNavigation.TabNavigation="Local" KeyboardNavigation.TabIndex="2"> 
          <ContentPresenter Margin="4" x:Name="PART_SelectedContentHost" ContentSource="SelectedContent"/> 
         </Border> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsEnabled" Value="False"> 
          <Setter Property="Foreground" Value="{DynamicResource DisabledForegroundBrush}"/> 
          <Setter Property="BorderBrush" Value="{DynamicResource DisabledBorderBrush}" TargetName="Border"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style>