WPF Custom TabControl с кнопкой группы. Проблема с нижней границей TabItem - PullRequest
0 голосов
/ 29 марта 2020

Я хочу создать TabControl с TabHeaders в одну строку и сгруппировать скрытые tabHeaders, как, например, в Photoshop.
Я нашел какой-то пример, и все отлично. Но проблема в нижней границе не выбранных вкладок. Я знаю, что могу воссоздать полный шаблон TabItem, но, может быть, есть более лучший способ? Кто-нибудь может помочь?

enter image description here

<TabControl>
    <TabControl.Template>
        <ControlTemplate TargetType="{x:Type TabControl}">
            <Grid  ClipToBounds="True" KeyboardNavigation.TabNavigation="Local" SnapsToDevicePixels="True">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition x:Name="ColumnDefinition0" />
                    <ColumnDefinition x:Name="ColumnDefinition1" Width="0" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition x:Name="RowDefinition0" Height="Auto" />
                    <RowDefinition x:Name="RowDefinition1" Height="*" />
                </Grid.RowDefinitions>
                <Border x:Name="ContentPanel" Grid.Row="1" Grid.Column="0" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" KeyboardNavigation.DirectionalNavigation="Contained" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local">
                    <Grid x:Name="PART_ItemsHolder" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                </Border>
                <ScrollViewer x:Name="HeaderPanel" Grid.Row="0" Grid.Column="0"   KeyboardNavigation.TabIndex="1" Background="Transparent" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Disabled">
                    <ScrollViewer.Style>
                        <Style TargetType="{x:Type ScrollViewer}">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate>
                                        <Grid Grid.Row="0" Grid.Column="0" Margin="0,0,0,-1" >
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="*"/>
                                                <ColumnDefinition Width="8"/>
                                                <ColumnDefinition Width="Auto"/>
                                            </Grid.ColumnDefinitions>
                                            <ScrollContentPresenter Grid.Column="0" Content="{TemplateBinding ScrollViewer.Content}" />
                                            <Menu Grid.Column="6" >
                                                <MenuItem>
                                                    <MenuItem.Template>
                                                        <ControlTemplate>
                                                            <RepeatButton Grid.Column="2" Content="&lt;" Command="ScrollBar.LineLeftCommand" FontWeight="Bold" />
                                                        </ControlTemplate>
                                                    </MenuItem.Template>
                                                </MenuItem>
                                                <MenuItem>
                                                    <MenuItem.Template>
                                                        <ControlTemplate>
                                                            <RepeatButton Grid.Column="4" Content="&gt;" Command="ScrollBar.LineRightCommand" FontWeight="Bold" />
                                                        </ControlTemplate>
                                                    </MenuItem.Template>
                                                </MenuItem>
                                                <MenuItem   Header="\/" >
                                                    <MenuItem Header="123" />
                                                    <MenuItem Header="123" />
                                                </MenuItem>
                                            </Menu>
                                        </Grid>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </ScrollViewer.Style>
                    <StackPanel IsItemsHost="true" Margin="2,2,4,0" Panel.ZIndex="1"  Orientation="Horizontal" Background="Transparent" KeyboardNavigation.TabIndex="1"  />
                </ScrollViewer>
            </Grid>
        </ControlTemplate>
    </TabControl.Template>
    <TabItem Header="fff"><TextBlock Text="sss" /></TabItem>
    <TabItem Header="fff"><TextBlock Text="sss" /></TabItem>
</TabControl>
...