1

我已经在 tabcontrol 中设置了 tabitem 的样式

<Style x:Key="TabHeaderStyle" TargetType="{x:Type TabItem}">
        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate >
                    <Grid HorizontalAlignment="Stretch" Height="22">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="20" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="2"  ></RowDefinition>
                            <RowDefinition Height="Auto" ></RowDefinition>
                        </Grid.RowDefinitions>
                        <Rectangle Fill="{Binding  RelativeSource={RelativeSource AncestorType={x:Type TabItem} }, Path=Content.DataContext.HeaderColor}" Grid.ColumnSpan="2"></Rectangle>
                        <TextBlock Grid.Row="1" Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem} }, Path=Content.DataContext.HeaderInfo}"
                                       VerticalAlignment="Bottom" Margin="4,0,8,0"/>
                        <Button Grid.Row="1" Grid.Column="1" Content="x" ToolTipService.ToolTip="Close this view." BorderBrush="{x:Null}" Background="{x:Null}" Foreground="#FF224A71" VerticalAlignment="Center" Padding="3,0">
                            <Button.OpacityMask>
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="Black" Offset="0"/>
                                    <GradientStop Color="#4BFFFFFF" Offset="1"/>
                                </LinearGradientBrush>
                            </Button.OpacityMask>
                            <ei:Interaction.Triggers>
                                <ei:EventTrigger EventName="Click">
                                    <Controls:CloseTabbedViewAction />
                                </ei:EventTrigger>
                            </ei:Interaction.Triggers>
                        </Button>
                    </Grid>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

当我像这样打开几个标签时,tabitem 看起来不错

在此处输入图像描述

这个看起来不错,“x”,右对齐的近视图。我的问题是,当我打开更多选项卡时,标准选项卡控件功能是在选项卡空间很小时添加一行。发生这种情况时,tabitems 会调整大小,但它们似乎没有通知子控件,因为选项卡看起来像这样

在此处输入图像描述

请注意,“x”没有像以前那样右对齐。我试图将数据模板基于不同样式的网格和堆栈面板,但无济于事。任何人都知道即使我有多行选项卡,我将如何使“x”按钮右对齐。

4

2 回答 2

1

GridColumnDefinitions会限制它们的宽度(Auto意味着自动调整到内容的大小

而是尝试:

<Grid.ColumnDefinitions>
   <ColumnDefinition Width="*" />
   <ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>

(另外,我不知道是否会有所作为,但在我的TabItem风格中,我通常Template使用 a来设置ControlTemplate,而不是像你正在做的那样HeaderTemplate使用 a来设置)DataTemplate

于 2012-09-14T13:32:43.603 回答
0

在您的 TabItem 模板中尝试此操作...

 <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
 <Setter Property="VerticalContentAlignment" Value="Stretch"/>

让我知道它是否能解决您的问题。我不能在这里测试你的代码。

于 2012-09-14T14:26:05.673 回答