2017-08-09 110 views
1

我有一個TabControl有很多TabItems創建2行選項卡項目。當我點擊第一行的一個標籤時,整行移動到第二行位置,第二行移動到最上面。如何阻止這些標籤移動?如何停止TabItems移動

之前點擊一個TabItem的: ​​

點擊文件的TabItem後: enter image description here

+0

您是否使用自定義樣式?請發佈它。 – mm8

+0

嗯......我只有在TabItem上設置的樣式...我猜你必須替換下面提到的整個TabControl模板。將嘗試並標記您的答案。謝謝。 – Radiohead

回答

1

WrapPanel更換TabPanel默認ControlTemplate。您需要重新定義整個模板:

<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>