在那个位置放置内容不是一种简单的方法,但有一种方法。要做到这一点,您必须重写默认值。
ControlTemplate
对于
TabControl
.
大多数系统主题
TabPanel
(选项卡所在的位置)和选项卡内容
Grid
像这样:
<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>
所以你
能够
向网格中添加另一个ContentControl并将其绑定到自定义附加属性。请记住,默认的ControlTemplates也有许多触发器来控制溢出处理,除其他之外,您还必须确保您的附加UI元素不会干扰这一点。
但是,如果不需要处理tabControl方向或溢出,您应该能够很快获得类似的结果:
Three TabItems with a Red Border and TextBlock http://img35.imageshack.us/img35/3237/tabpanelexample.png
祝你好运!