相关疑难解决方法(0)

WPF Flexible TabControl标头

我希望有一个TabControl多重TabItems.这些TabItems各有一个标题文本.这些文本的长度可能有很大差异(如5个字符长和15个字符长).

我希望TabControl仅将标题排成一行.

所有选项卡标题应使用相同的宽度,并且当有足够的可用空间时,我希望它们使用所有可用空间,最多为a MaxWidth,对所有项目都相同.

因此,如果我想对7个项目使用100的vMaxWidth`,则标签标题的宽度最大为700.如果有更多可用空间,则应忽略它.

如果可用空间较少,我希望在项目之间平均分配该空间.如果文本被切断,我想使用TextWrapping.

我现在尝试了多种解决这个问题的方法,这是我目前的设置:

<Style x:Key="Style-TabControl-Main" TargetType="{x:Type TabControl}">
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TabControl}">
                <Grid KeyboardNavigation.TabNavigation="Local">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>

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

                    <Border BorderThickness="0,0,0,1" Margin="13,0,0,0" BorderBrush="{StaticResource Brush-White}">
                        <StackPanel Panel.ZIndex="1" x:Name="HeaderPanel" IsItemsHost="True" KeyboardNavigation.TabIndex="1" Background="Transparent" 
                                    Orientation="Horizontal"/>
                    </Border>

                    <Border x:Name="Border"
                            Grid.Row="1" Grid.ColumnSpan="2"
                            KeyboardNavigation.TabNavigation="Local"
                            KeyboardNavigation.DirectionalNavigation="Contained"
                            KeyboardNavigation.TabIndex="2"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}">
                        <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" /> …
Run Code Online (Sandbox Code Playgroud)

wpf xaml tabcontrol

3
推荐指数
1
解决办法
4160
查看次数

标签 统计

tabcontrol ×1

wpf ×1

xaml ×1