选项卡控制宽度wpf

选项卡控制宽度wpf,wpf,width,tabcontrol,Wpf,Width,Tabcontrol,我有一个有n个选项卡的选项卡控件。 我试图限制TabControl的宽度,这样,如果只剩下一个选项卡,那么当我调整包含TabControl的主窗口的大小时,它的标题将始终可见。 有什么建议吗?如果只剩下一项,我通常会隐藏选项卡: <TabControl ItemsSource="{Binding Data}"> <TabControl.ItemContainerStyle> <Style TargetType="{x:Type TabItem

我有一个有n个选项卡的选项卡控件。 我试图限制TabControl的宽度,这样,如果只剩下一个选项卡,那么当我调整包含TabControl的主窗口的大小时,它的标题将始终可见。
有什么建议吗?

如果只剩下一项,我通常会隐藏选项卡:

<TabControl ItemsSource="{Binding Data}">
    <TabControl.ItemContainerStyle>
        <Style TargetType="{x:Type TabItem}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TabControl}, Path=Items.Count}"
                             Value="1">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TabControl.ItemContainerStyle>
</TabControl>

我不明白这个问题。调整窗口大小时,tabcontrol的tabitem标题是否消失?建议显示导致此行为的一些代码。
<TabControl.ItemContainerStyle>
    <Style TargetType="{x:Type TabItem}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TabControl}, Path=Items.Count}"
                     Value="1">
                <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource AncestorType=TabControl}, Path=ActualWidth}"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
    <Style.Resources>
        <local:AddConverter x:Key="AddConverter"/>
    </Style.Resources>
    <Style.Triggers>
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TabControl}, Path=Items.Count}"
                 Value="1">
            <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource AncestorType=TabControl},
                                                     Path=ActualWidth,
                                                     Converter={StaticResource AddConverter},
                                                     ConverterParameter=-5}"/>
        </DataTrigger>
    </Style.Triggers>
</Style>
public class AddConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        double input = (double)value;
        double input2 = double.Parse(parameter as string);
        return input + input2;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        double input = (double)value;
        double input2 = double.Parse(parameter as string);
        return input - input2;
    }
}