WPF选项卡边距

8
我有一个WPF TabControl,其中包含一些TabItems。如果有意义的话,我想在TabItems组的左侧和右侧设置边距。
我将在下面绘制一些ASCII艺术来阐明观点。我希望在选项卡一左侧有一个固定的边距,但我也希望在选项卡三右侧有一个固定的边距。
|--------------------------------------------------|
|            |-----||-----||-----|                 |
| <-Margin-> |  1  ||  2  ||  3  | <-Margin->      |
|------------|     ||-----||-----|-----------------|
|                                                  |
|  How do I get margin or padding on both          |
|    sides of my tabs?                             |
|                                                  |
|                                                  |
|--------------------------------------------------|

标签的数量是无限的,因此它们会随着添加的数量而堆叠。它需要正确地工作。
另外,请注意,我不想让整个选项卡控件变小。只是选项卡标签或标题或任何其他东西。
我发现,如果我将选项卡设置为具有类似于“60,0,-60,0”的边距,我就可以在选项卡左侧获得所需的效果,但这似乎是一种hack方法,并且在右侧不起作用。
我正在使用VS 2010中的WPF 4.0。
1个回答

6
尝试使用这种样式。
   <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>

编辑

您可以直接将边距添加到TabControl的ControlTemplate中的tabpanel中。

查看链接以获取更多信息:

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


谢谢。看起来可以了。这个神奇的东西似乎在TabPanel里面。我还不太理解,但我相信那就是我想要的。 - Michael T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接