Изменить размер сетки с GridSplitter - PullRequest
2 голосов
/ 28 марта 2019

У меня есть следующее Grid, где я хочу ввести GridSplitter, чтобы изменить размер содержимого Expander, если оно развернуто:

<Grid Grid.Row="2" Margin="0,5,0,0" >
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Grid Grid.Row="0">
        <!-- Menu -->
    </Grid>
    <Grid Grid.Row="1">
        <!-- Main-Content -->
    </Grid>
    <GridSplitter Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Stretch" Height="3"/>
    <Expander Grid.Row="3" Margin="0,10,0,0" VerticalAlignment="Bottom" Header="Details">
        <TabControl ItemsSource="{Binding DetailsViewModels}">
            <TabControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding DisplayHeader}"/>
                </DataTemplate>
            </TabControl.ItemTemplate>
        </TabControl>
    </Expander>
</Grid>

Моя проблема сейчас заключается в размере Expander -Контент и поведение изменения размера при перемещении GridSplitter.

Если я установлю Высоту RowDefinition, где Расширитель равен *, то он займет много места, если расширительрасширен.

Если я установлю MaxHeight на TabControl, тогда я могу сделать TabControl меньшим, если Expander развернут.Но если максимальная высота достигается только при непрерывном движении GridSplitter.

Если я не установлю какой-либо размер, TabControl принимает его на полную высоту, что, к сожалению, слишком много.

Как я могу добиться, чтобы TabControl занимал определенную максимальную высоту, но я мог бы увеличить ее, используя GridSplitter?

1 Ответ

0 голосов
/ 28 марта 2019

Может быть, вы можете поймать событие Expanded of the Expander из кода позади и самостоятельно установить желаемый размер сетки?

...