WPF标签边距

时间:2011-03-23 04:22:53

标签: wpf wpf-controls wpftoolkit

我有一个WPF TabControl,带有一些TabItems。我想要TabItems组左侧和右侧的边距,如果这是有道理的。

我将在下面绘制一些ASCII艺术来说明问题。我想在第一个标签的左边有一个固定的边距,但我还想在标签3的右边有一个固定的边距。

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

干杯!

1 个答案:

答案 0 :(得分:5)

尝试使用这种风格。

   <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