C# 防止TabControl中的TabItems重新定位?

C# 防止TabControl中的TabItems重新定位?,c#,wpf,tabcontrol,tabitem,C#,Wpf,Tabcontrol,Tabitem,在WPF中,当所选TabItem发生更改时,是否有一种简单的方法可以阻止TabControl中的TabItems重新定位?因此,单击TabItem只会显示其内容,而不会像通常那样重新定位TabItems(如果选定的TabItem不在,则将其移动到选项卡的底部一行) 编辑:为了澄清这一点,我确实希望选项卡显示在多行中,但我只是不希望在选中除底行以外的行中的TabItem时重新定位选项卡标题。我希望标题集合保持完全静态,但单击标题时仍显示该选项卡项的内容 谢谢 如果您有Blend,您可以为选项卡控件

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

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


谢谢

如果您有Blend,您可以为选项卡控件编辑一份模板副本,以删除此行为,我相信。

我知道已经很晚了,但我今天必须解决这个问题,所以现在开始

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

下面是一个使用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>

然后按如下方式使用它

 <TabControl Style="{StaticResource MyTabControl}" ....

我真的很欣赏没有评论的否定。我刚刚花了一天时间与Microsoft团队成员进行配对编程,其中包括blend团队的一名成员,我们在其中讨论了WPF控件的无外观特性。我们还通过在blend中编辑控件模板的副本,然后将编辑的模板设置为该控件的默认模板,从而覆盖expander控件的行为。如果选项卡控件的这种行为是硬编码的,那么它就违反了Microsoft发布的指导原则。