2011-03-23 12 views
7

Tengo un WPF TabControl, con algunos TabItems. Quiero márgenes a la izquierda y a la derecha del grupo TabItems, si tiene sentido.WPF Tab Margins

Voy a dibujar un poco de arte ASCII a continuación para aclarar el punto. Quiero un margen fijo a la izquierda de la pestaña uno, pero también quiero un margen fijo a la derecha de la pestaña tres.

|--------------------------------------------------| 
|   |-----||-----||-----|     | 
| <-Margin-> | 1 || 2 || 3 | <-Margin->  | 
|------------|  ||-----||-----|-----------------| 
|             | 
| How do I get margin or padding on both   | 
| sides of my tabs?        | 
|             | 
|             | 
|--------------------------------------------------| 

El número de pestañas es ilimitado, por lo que se acumularán a medida que se agreguen más. Necesita funcionar correctamente para eso.

Además, tenga en cuenta que no quiero reducir el control de la pestaña completa. Solo las pestañas o encabezados de tabitem o lo que sea que sean.

Descubrí que si configuro las pestañas para tener un margen de algo así como "60,0, -60,0", obtengo el efecto deseado a la izquierda de las pestañas, pero eso parece un truco, y no funcionará para el lado derecho.

estoy usando WPF 4.0 en VS 2010.

Salud!

Respuesta

4

Intente utilizar este estilo.

<Style TargetType="{x:Type TabControl}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type TabControl}"> 
         <Grid> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="Auto"/> 
           <RowDefinition Height="*"/> 
          </Grid.RowDefinitions> 
          <TabPanel 
      Grid.Row="0" 
      Panel.ZIndex="1" 
      Margin="60,0,60,-1" 
      IsItemsHost="True" 
      Background="Transparent" /> 
          <Border 
      Grid.Row="1" 
      BorderBrush="Black" 
      BorderThickness="1" 
      CornerRadius="0, 12, 12, 12" > 
           <Border.Background> 
            <LinearGradientBrush> 
             <GradientStop Color="LightBlue" Offset="0" /> 
             <GradientStop Color="White" Offset="1" /> 
            </LinearGradientBrush> 
           </Border.Background> 
           <ContentPresenter ContentSource="SelectedContent" /> 
          </Border> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

EDITAR

Se puede dar el margen directamente al interior de la TabPanel ControlTemplate de tabcontrol

Comprobar el enlace para más

http://www.switchonthecode.com/tutorials/the-wpf-tab-control-inside-and-out

+0

Gracias. Eso parece hacerlo. La magia parece estar en ese TabPanel. Todavía no lo entiendo, pero creo que eso es lo que quiero. – Michael