在WPF中,是否有一种简单的方法可以在选定的TabItem更改时停止TabControl中的TabiTems重新定位?因此,单击 TabItem 只会显示其内容,但不会像通常那样重新定位 TabItems(通过将选定的 TabItem 移动到选项卡的底行,如果它还没有的话)。
编辑:为了澄清,我确实希望标签显示在多行中,我只是不希望在选择来自底行以外的行的 TabItem 时重新定位标签标题。我希望标题的集合保持完全静态,但是当单击它的标题时仍会显示该 TabItem 的内容。
谢谢!
在WPF中,是否有一种简单的方法可以在选定的TabItem更改时停止TabControl中的TabiTems重新定位?因此,单击 TabItem 只会显示其内容,但不会像通常那样重新定位 TabItems(通过将选定的 TabItem 移动到选项卡的底行,如果它还没有的话)。
编辑:为了澄清,我确实希望标签显示在多行中,我只是不希望在选择来自底行以外的行的 TabItem 时重新定位标签标题。我希望标题的集合保持完全静态,但是当单击它的标题时仍会显示该 TabItem 的内容。
谢谢!
我知道为时已晚,但我今天必须弄清楚这一点,所以就这样吧。
基本上,您需要为选项卡控件创建自己的控件模板,并使用不同的面板来包含您的选项卡项。
这是一个使用 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}" ....
您可以在此处下载控制模板示例
如果您有 Blend,您可以编辑选项卡控件的模板副本,以消除我相信的这种行为。