如何:设置 TabControl 的样式

更新:2007 年 11 月

本主题演示如何设置 TabControl 及其所含项控件的样式。

示例

下面的示例演示对 TabControl 控件模板的构成元素进行的更改。

<Style x:Key="{x:Type TabControl}" TargetType="{x:Type TabControl}">
  <Setter Property="BorderThickness" Value="3"/>
  <Setter Property="BorderBrush" Value="Red"/>
  <Setter Property="Background" Value="LightBlue"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="TabControl">
        <Grid>
          <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
          </Grid.RowDefinitions>
          <Border BorderThickness="0,0,1,1" BorderBrush="#D0CEBF" Grid.Row="1">
            <Border BorderThickness="{TemplateBinding BorderThickness}" 
                BorderBrush="{TemplateBinding BorderBrush}">
              <Border Background="{TemplateBinding Background}">
                <ContentPresenter ContentSource="SelectedContent"/>
              </Border>
            </Border>
          </Border>
          <TabPanel Grid.Row="0" IsItemsHost="true"/>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

下面的示例演示如何设置 TabControl 中所用的 TabItem 的样式。

<Style TargetType="TabItem">
  <Setter Property="BorderThickness" Value="3"/>
  <Setter Property="BorderBrush" Value="Red"/>
  <Setter Property="Background" Value="LightBlue"/>
  <Setter Property="VerticalContentAlignment" Value="Center"/>
  <Setter Property="HorizontalContentAlignment" Value="Center"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type TabItem}">
        <Border>
          <Grid>
            <Grid>
              <Border CornerRadius="3,3,0,0" Background="{TemplateBinding Background}" 
                   BorderBrush="{TemplateBinding BorderBrush}" 
                   BorderThickness="{TemplateBinding BorderThickness}"/>
            </Grid>
            <Border BorderThickness="{TemplateBinding BorderThickness}" 
                 Padding="{TemplateBinding Padding}">
              <ContentPresenter ContentSource="Header" 
                 HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                 VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
            </Border>
          </Grid>
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>
说明:

不要将 TabItemContent 属性绑定到 TabItem 模板的 ContentPresenter。而应使用 TabControlContentTemplate 属性绑定到 TabControl 的选项卡项的内容。

有关完整示例,请参见 使用控件模板的 TabControl 示例