TabConnel的边距通过TabControl.Resources

时间:2014-04-28 20:17:03

标签: wpf xaml

我们如何通过TabControl.Resources设置TabPanel的边距,我尝试了这段代码:

                    <TabControl.Resources>
                        <Style TargetType="TabPanel">
                            <Setter Property="Margin" Value="500,0,0,0" />
                        </Style>
                    </TabControl.Resources>
                </TabControl>

但是,在设置宽度时,这不起作用:

                <TabControl.Resources>
                        <Style TargetType="TabPanel">
                            <Setter Property="Width" Value="500" />
                        </Style>
                    </TabControl.Resources>
                </TabControl>

目前我已经使用模板设置了边距,但我想为一个单独的TabControl编辑它。

感谢MikaelTörnqvist

1 个答案:

答案 0 :(得分:0)

您需要在TabPanel

Template内指定TabControl的保证金

像:

    <Style  TargetType="{x:Type TabControl}">
        <Setter Property="OverridesDefaultStyle" Value="True" />
        <Setter Property="SnapsToDevicePixels" Value="True" />
        <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type TabControl}">
            <Grid KeyboardNavigation.TabNavigation="Local">
              <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="*" />
              </Grid.RowDefinitions>
              <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="CommonStates">
                  <VisualState x:Name="Disabled">
                    <Storyboard>
                      <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                                    Storyboard.TargetProperty="(Border.BorderBrush).
                        (SolidColorBrush.Color)">
                        <EasingColorKeyFrame KeyTime="0"
                                             Value="#FFAAAAAA" />
                      </ColorAnimationUsingKeyFrames>
                    </Storyboard>
                  </VisualState>
                </VisualStateGroup>
              </VisualStateManager.VisualStateGroups>
              <TabPanel x:Name="HeaderPanel"
                        Grid.Row="0"
                        Panel.ZIndex="1"
                        Margin="500,0,4,-1"
                        IsItemsHost="True"
                        KeyboardNavigation.TabIndex="1"
                        Background="Transparent" />
              <Border x:Name="Border"
                      Grid.Row="1"
                      BorderThickness="1"
                      CornerRadius="2"
                      KeyboardNavigation.TabNavigation="Local"
                      KeyboardNavigation.DirectionalNavigation="Contained"
                      KeyboardNavigation.TabIndex="2">
                <Border.Background>
                  <LinearGradientBrush EndPoint="0.5,1"
                                       StartPoint="0.5,0">
                    <GradientStop Color="{DynamicResource ContentAreaColorLight}"
                                  Offset="0" />
                    <GradientStop Color="{DynamicResource ContentAreaColorDark}"
                                  Offset="1" />
                  </LinearGradientBrush>
                </Border.Background>
                <Border.BorderBrush>
                  <SolidColorBrush Color="{DynamicResource BorderMediumColor}"/>
                </Border.BorderBrush>
                <ContentPresenter x:Name="PART_SelectedContentHost"
                                  Margin="4"
                                  ContentSource="SelectedContent" />
              </Border>
            </Grid>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
</TabControl.Resources>