WPF GridSplitter TabHeader Позиционирование - PullRequest
0 голосов
/ 13 марта 2019

У меня есть следующая структура сетки в моем приложении:

Click here to see the structure

  • 3 строки / 3 столбца:
    • Строка 0 Кол 0: TabControl с 3 TabItems
    • Ряд 1 Кол 0: GridSplitter
    • Строка 2 Кол 0: TabControl с 3 TabItems
    • Ряд 0 Кол 1: Gridsplitter
    • Строка 1 Кол 1: -
    • Ряд 2 Кол 1: GridSplitter
    • Строка 0 Кол 2: AnyControls
    • Строка 1 Col 2: GridSplitter
    • Строка 2 Кол 2: AnyControls

Я хочу, чтобы 2 группы TabHeader были выровнены рядом над горизонтальным GridSplitter ...

У кого-нибудь есть идеи? Я застрял здесь как-то ...

1 Ответ

1 голос
/ 13 марта 2019

Установите верхнее поле нижней вкладки на отрицательное число, чтобы оно простиралось выше своего местоположения в сетке. Поместите GridSplitter под ним, установив его для изменения размера строк и растяжения по горизонтали (я использовал синий фон, чтобы сделать его видимым).

See image here

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition Width="10"></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition Height="10"></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>

    <!-- Set the GridSplitter's ResizeDirection to Rows, and its HorizontalAlignment to Stretch -->
    <GridSplitter Grid.Row="1" Grid.Column="0" Height="2" ResizeDirection="Rows" HorizontalAlignment="Stretch" Background="Blue"></GridSplitter>

    <!-- Place the upper TabControl's tabs on the bottom and aligned to the right. -->
    <TabControl Grid.Column="0" Grid.Row="0" TabStripPlacement="Bottom">
        <TabControl.Resources>
            <Style TargetType="TabPanel">
                <Setter Property="HorizontalAlignment" Value="Right"/>
            </Style>
        </TabControl.Resources>
        <TabItem Header="Item 1"></TabItem>
        <TabItem Header="Item 2"></TabItem>
        <TabItem Header="Item 3"></TabItem>
    </TabControl>    

    <!-- Set the lower TabControl's top margin to -30 to extend up out of its location in the grid. -->
    <TabControl Grid.Column="0" Grid.Row="2" Margin="0, -30, 0, 0">
        <TabItem Header="Item 1"></TabItem>
        <TabItem Header="Item 2"></TabItem>
        <TabItem Header="Item 3"></TabItem>
    </TabControl>


</Grid>
...