2017-08-09 3 views
1

Ich habe ein TabControl mit vielen TabItems, die 2 Zeilen Tabs erstellen. Wenn ich auf eine Registerkarte in der ersten Zeile klicke, wird die gesamte Zeile an die zweite Zeilenposition und die zweite Zeile an die oberste Zeile verschoben. Wie verhindere ich, dass diese Tabs sich bewegen?Wie kann ich verhindern, dass TabItems sich bewegt

Bevor ein TabItem klicken auf: enter image description here

Nach dem Einschalten der Datei TabItem klicken: enter image description here

+0

Verwenden Sie einen benutzerdefinierten Stil? Bitte posten Sie es dann. – mm8

+0

Nun ... Ich habe nur einen Stil auf TabItem gesetzt ... ich denke, ich muss die gesamte TabControl-Vorlage ersetzen, wie Sie unten erwähnen. Werde das versuchen und deine Antwort markieren. Vielen Dank. – Radiohead

Antwort

1

die TabPanel im Standard ersetzen ControlTemplate mit einem WrapPanel. Sie müssen die gesamte Vorlage neu definieren:

<TabControl> 
    <TabControl.Template> 
     <ControlTemplate TargetType="{x:Type TabControl}"> 
      <Grid x:Name="templateRoot" ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition x:Name="ColumnDefinition0"/> 
        <ColumnDefinition x:Name="ColumnDefinition1" Width="0"/> 
       </Grid.ColumnDefinitions> 
       <Grid.RowDefinitions> 
        <RowDefinition x:Name="RowDefinition0" Height="Auto"/> 
        <RowDefinition x:Name="RowDefinition1" Height="*"/> 
       </Grid.RowDefinitions> 
       <WrapPanel x:Name="headerPanel" Background="Transparent" Grid.Column="0" IsItemsHost="true" Margin="2,2,2,0" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/> 
       <Border x:Name="contentPanel" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="0" KeyboardNavigation.DirectionalNavigation="Contained" Grid.Row="1" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local"> 
        <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
       </Border> 
      </Grid> 
      <ControlTemplate.Triggers> 
       <Trigger Property="TabStripPlacement" Value="Bottom"> 
        <Setter Property="Grid.Row" TargetName="headerPanel" Value="1"/> 
        <Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/> 
        <Setter Property="Height" TargetName="RowDefinition0" Value="*"/> 
        <Setter Property="Height" TargetName="RowDefinition1" Value="Auto"/> 
        <Setter Property="Margin" TargetName="headerPanel" Value="2,0,2,2"/> 
       </Trigger> 
       <Trigger Property="TabStripPlacement" Value="Left"> 
        <Setter Property="Grid.Row" TargetName="headerPanel" Value="0"/> 
        <Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/> 
        <Setter Property="Grid.Column" TargetName="headerPanel" Value="0"/> 
        <Setter Property="Grid.Column" TargetName="contentPanel" Value="1"/> 
        <Setter Property="Width" TargetName="ColumnDefinition0" Value="Auto"/> 
        <Setter Property="Width" TargetName="ColumnDefinition1" Value="*"/> 
        <Setter Property="Height" TargetName="RowDefinition0" Value="*"/> 
        <Setter Property="Height" TargetName="RowDefinition1" Value="0"/> 
        <Setter Property="Margin" TargetName="headerPanel" Value="2,2,0,2"/> 
       </Trigger> 
       <Trigger Property="TabStripPlacement" Value="Right"> 
        <Setter Property="Grid.Row" TargetName="headerPanel" Value="0"/> 
        <Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/> 
        <Setter Property="Grid.Column" TargetName="headerPanel" Value="1"/> 
        <Setter Property="Grid.Column" TargetName="contentPanel" Value="0"/> 
        <Setter Property="Width" TargetName="ColumnDefinition0" Value="*"/> 
        <Setter Property="Width" TargetName="ColumnDefinition1" Value="Auto"/> 
        <Setter Property="Height" TargetName="RowDefinition0" Value="*"/> 
        <Setter Property="Height" TargetName="RowDefinition1" Value="0"/> 
        <Setter Property="Margin" TargetName="headerPanel" Value="0,2,2,2"/> 
       </Trigger> 
       <Trigger Property="IsEnabled" Value="false"> 
        <Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </TabControl.Template> 
    ... 
</TabControl> 
Verwandte Themen