Il n'y a pas un moyen facile de placer le contenu à cet endroit, mais il y a un chemin. Pour ce faire, vous devrez remplacer la valeur par défaut ControlTemplate
pour TabControl
.
La plupart des thèmes du système mis l'TabPanel
(où les onglets sont) et le contenu de l'onglet dans un Grid
comme ceci:
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid KeyboardNavigation.TabNavigation="Local"
SnapsToDevicePixels="true"
ClipToBounds="true">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="ColumnDefinition0"/>
<ColumnDefinition x:Name="ColumnDefinition1"
Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition x:Name="RowDefinition0"
Height="Auto"/>
<RowDefinition x:Name="RowDefinition1"
Height="*"/>
</Grid.RowDefinitions>
<TabPanel x:Name="HeaderPanel"
Panel.ZIndex ="1"
KeyboardNavigation.TabIndex="1"
Grid.Column="0"
Grid.Row="0"
Margin="2,2,2,0"
IsItemsHost="true"/>
<Border x:Name="ContentPanel"
BorderThickness="0,0,1,1"
BorderBrush="#D0CEBF"
KeyboardNavigation.TabNavigation="Local"
KeyboardNavigation.DirectionalNavigation="Contained"
KeyboardNavigation.TabIndex="2"
Grid.Column="0" Grid.ColumnSpan="2"
Grid.Row="1">
...
...
...
</Border>
</Grid>
...
</ControlTemplate>
Vous pouvez ajouter un autre ContentControl au réseau et l'ont se lier à une Propriété attachée personnalisée. Gardez à l'esprit que les ControlTemplates par défaut ont également de nombreux déclencheurs qui contrôlent la gestion des débordements, entre autres choses, et que vous devez vous assurer que vos éléments d'interface utilisateur supplémentaires n'interfèrent pas avec cela.
Vous devriez être en mesure d'obtenir quelque chose comme ça assez rapidement, cependant, si vous ne devez pas traiter avec une orientation TabControl ou overflow:
Three TabItems with a Red Border and TextBlock http://img35.imageshack.us/img35/3237/tabpanelexample.png
Bonne chance!