达到特定高度的子控件时显示GridRow并调整其大小

时间:2014-10-09 22:33:14

标签: wpf layout grid nested scrollviewer

我似乎无法使我的网格正确。我需要一个有两行的布局,第一行的动态高度基于子网格的高度。第二行包含几个按钮,此行具有30像素的恒定高度。当子网格的内容尚未达到842像素的高度时,窗口应该压缩以适合内容。否则,它会根据子Grid的高度进行扩展。

如果子网格的内容达到842像素,我想只显示第一个网格行的滚动条。

我玩过MinHeight和MaxHeight但到目前为止还没有任何工作。现在,滚动条显得太晚了,当子网格中没有内容时,窗口不会压缩。

 <Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition MaxHeight="35px" Height="35*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <ScrollViewer Grid.Row="0" Grid.Column="0" VerticalScrollBarVisibility="Auto" MinHeight="842px" Margin="0,0,0,13" Grid.RowSpan="2">
        <Grid>
        <Grid.ColumnDefinitions>               
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>                
        </Grid.RowDefinitions>

        //Many controls here...

        </Grid>
</ScrollViewer>
<Button Grid.Column="0" Grid.Row="1"></Button>
<Button Grid.Column="0" Grid.Row="1"></Button>
</Grid>  

编辑:添加了一张图片以供澄清。

enter image description here

1 个答案:

答案 0 :(得分:1)

喜欢这个吗?

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication1"
        Title="MainWindow" SizeToContent="WidthAndHeight">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="35" />
        </Grid.RowDefinitions>
        <ScrollViewer Background="Yellow" Grid.Row="0"  VerticalScrollBarVisibility="Auto" MaxHeight="842" Margin="0,0,0,13">
            <Grid>
                <Rectangle Fill="Red" Width="100" Height="300" HorizontalAlignment="Center" VerticalAlignment="Center"></Rectangle>
            </Grid>
        </ScrollViewer>
        <Button  Grid.Row="1">But</Button>
    </Grid>

</Window>