2011-03-23 110 views
7

我有一个WPF TabControl,带有一些TabItems。如果有意义的话,我想在TabItems组的左边和右边留有边距。WPF Tab页边距

我打算在下面画一些ASCII艺术来表达观点。我想要在第一个标签左边的固定边距,但我也想在第三个标签右边有一个固定边距。

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

选项卡的数量是无限的,所以它们会随着更多的添加而堆叠。它需要为此正确工作。

此外,请注意,我不想让整个选项卡控件变小。只是tabitem选项卡或标题或任何他们是。

我发现,如果我将标签设置为“60,0,-60,0”之类的边距,我会在标签左侧获得所需的效果,但这看起来像是黑客,而且将不适用于右手边。

我在VS 2010中使用WPF 4.0。

干杯!

回答

4

请尝试使用此款式。

<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> 

编辑

您可以直接给保证金到一个tabpanel的tabcontrol的控件模板

检查里面的链接,更

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

+0

谢谢。这似乎做到了。魔术似乎在TabPanel中。我还不明白,但我相信这就是我想要的。 – Michael 2011-03-23 05:40:21