Dies beinhaltet ein benutzerdefiniertes ControlTemplate für das TabControl. Ich habe ein Beispiel mit einem DockPanel als Element-Host und nicht mit dem Standard-TabPanel versucht.
<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>
<DockPanel Name="HeaderPanel"
LastChildFill="False"
Grid.Row="0"
Panel.ZIndex="1"
Margin="0,0,4,-1"
IsItemsHost="True"
KeyboardNavigation.TabIndex="1"
Background="Transparent" />
<Border Name="Border"
Grid.Row="1"
Background="WhiteSmoke"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="2"
KeyboardNavigation.TabNavigation="Local"
KeyboardNavigation.DirectionalNavigation="Contained"
KeyboardNavigation.TabIndex="2">
<ContentPresenter Name="PART_SelectedContentHost"
Margin="4"
ContentSource="SelectedContent" />
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Das Problem ist, dass ich nicht weiß, von einer Art, die DockPanel.Dock Eigenschaft des Aussetzens des TabItems außerhalb des Control Z.B.
<TabControl Margin="10">
<TabItem Header="Tab One" DockPanel.Dock="Left"/>
<TabItem Header="Tab Two" DocKPanel.Dock="Left"/>
<TabItem Header="Tab Three" DocKPanel.Dock="Left"/>
<TabItem Header="Tab Four" DocKPanel.Dock="Right"/>
</TabControl>
// Note: This does not work!!
Ich denke, Sie müssen Ihr eigenes Panel schreiben, um die TabItems zu hosten; Beachten Sie, dass dies eine Menge Arbeit sein wird, da Sie Dinge wie Überlaufverhalten behandeln müssen, die in das TabPanel integriert sind.
Auch wenn Sie dies versucht haben, denke ich, dass Sie eine benutzerdefinierte TabControl schreiben müssten, wenn Sie diese Funktionalität außerhalb der ControlTemplate verfügbar machen wollten.
Wenn Sie diesen Weg gehen, dann in dieser meine Antwort sehen post
Dank, das ist gut genug für mich. – Daniel