Разделение заголовков вкладок и содержимого вкладок в WPF TabControl - PullRequest
0 голосов
/ 24 сентября 2019

Я хочу поместить текстовое поле под заголовками вкладок (точно так же, как в Google Chrome и т. П.) И содержимое вкладки под этим текстовым полем

Так будет выглядеть так:

<!-- Tab Headers -->
<TextBox x:Name="txtUrl" />
<!-- Tab Content-->

Я искал повсюду, и я не могу найти способ.

Я использую WPF.

Есть идеи?Спасибо.

РЕДАКТИРОВАТЬ:

Это мой текущий вид

Я пытаюсь сделать это так

Вы можете видеть заголовки вкладок и их содержимое, разделенные панелью

1 Ответ

1 голос
/ 24 сентября 2019

Для этого потребуется указать пользовательский ControlTemplate, к которому вы можете добавить TextBox:

<TabControl>
    <TabItem Header="1">
        <TextBlock>content...</TextBlock>
    </TabItem>
    <TabItem Header="2" />
    <TabItem Header="2" />
    <TabControl.Template>
        <ControlTemplate TargetType="{x:Type TabControl}">

            <Grid x:Name="templateRoot" ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition x:Name="ColumnDefinition0"/>
                    <ColumnDefinition x:Name="ColumnDefinition1" Width="0"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition x:Name="RowDefinition0" Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition x:Name="RowDefinition1" Height="*"/>
                </Grid.RowDefinitions>
                <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,0,0,1" SnapsToDevicePixels="True">
                    <TabPanel x:Name="headerPanel" Background="Transparent" Grid.Column="0" IsItemsHost="true" Margin="2,2,2,0" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/>
                </Border>
                <Border Grid.Row="1" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,0,1,0" SnapsToDevicePixels="True">
                    <TextBox Margin="10" />
                </Border>
                <Border x:Name="contentPanel" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,0,1,1" Background="{TemplateBinding Background}" Grid.Column="0" KeyboardNavigation.DirectionalNavigation="Contained" Grid.Row="2" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local">
                    <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                </Border>
            </Grid>
            <ControlTemplate.Triggers>
                <Trigger Property="IsEnabled" Value="false">
                    <Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </TabControl.Template>
</TabControl>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...