使用GridSplitter调整网格大小

时间:2019-03-28 07:16:31

标签: c# wpf xaml grid gridsplitter

我有以下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的高度设置为*,则扩展器会占用很多空间。

如果我在TabControl处设置MaxHeight,那么如果TabControl展开,我可以减小Expander。但是,如果达到最大高度,只有GridSplitter连续运动。

如果我没有设置任何大小,那么TabControl会占据整个高度,不幸的是太多了。

如何实现TabControl需要一定的最大高度,但是我可以使用GridSplitter来增加它呢?

1 个答案:

答案 0 :(得分:0)

也许您可以从后面的代码中捕获事件Expander of Expander,然后自己设置所需的网格大小?