将TabItems保留在TabControl中以重新定位?

Kir*_*irn 2 c# wpf tabcontrol tabitem

在WPF中,当选定的TabItem发生更改时,是否有一种简单的方法可以阻止TabControl中的TabItems重新定位?因此,单击TabItem只会显示其内容,但不会像往常那样重新定位TabItem(通过将选定的TabItem移动到选项卡的最下面一行,如果它不存在).

编辑:为了澄清,我确实希望选项卡显示在多行中,我只是不希望在选择除底行之外的行的TabItem时重新定位选项卡标题.我希望标题集合保持完全静态,但是当单击标题时仍然会显示该TabItem的内容.

谢谢!

bic*_*bic 5

我知道它已经很晚了,但今天我不得不弄清楚这一点.

基本上,您需要为选项卡控件创建自己的控件模板,并使用其他面板来包含选项卡项.

这是使用WrapPanel的简化示例.

<Style TargetType="TabControl" x:Key="MyTabControl">
<Setter Property="Template">
  <Setter.Value>
    <ControlTemplate TargetType="TabControl">
      <Grid SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local" HorizontalAlignment="Stretch">
        <Grid.RowDefinitions>
          <RowDefinition Height="Auto" />
          <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <WrapPanel x:Name="HeaderPanel" HorizontalAlignment="Center" VerticalAlignment="Top" IsItemsHost="true"
            Grid.Row="0" KeyboardNavigation.TabIndex="1" />
        <ContentPresenter Grid.Row="1" x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="10" />
      </Grid>
    </ControlTemplate>
  </Setter.Value>
</Setter>
Run Code Online (Sandbox Code Playgroud)

然后使用如下

 <TabControl Style="{StaticResource MyTabControl}" ....
Run Code Online (Sandbox Code Playgroud)

您可以在此处下载控件模板示例