栅格切割器:将行高限制为窗口大小

Jan*_*Jan 6 c# wpf grid resize gridsplitter

我刚刚开始尝试使用网格分裂器并且偶然发现了一个非常奇怪的行为,我似乎无法修复它.显然其他人有类似的问题(根据谷歌),但没有有用的评论.

我有一个2行的网格.在启动时,底部的一个有Hight250个.顶行用剩下的*.当我使用拆分器调整行的大小时,行为与顶行的预期一致.但是当我向上拖动分割器并经过程序窗口时,底行的内容将从窗口中掉出(=向下移动直到它消失).我希望我不能使每一行都大于父容器.

<Grid x:Name="grid_main" ScrollViewer.VerticalScrollBarVisibility="Disabled" >
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition MinHeight="250"  Height="250"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <GridSplitter x:Name="splitter" 
        ResizeDirection="Rows" Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Width="Auto"
        Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="0" ResizeBehavior="BasedOnAlignment" />
    <Grid Grid.Column="0" Grid.Row="0">
    </Grid>
    <Grid Grid.Column="0" Grid.Row="1">              
    </Grid>
</Grid>
Run Code Online (Sandbox Code Playgroud)

这是我的代码.两行的内容再次托管在网格中,并且为了简单起见已被删除.再次:调整顶行的大小可以正常工作.但是底行可以调整为无穷大.如果我硬编码,它会按预期工作MaxHeight.但这取决于窗口大小.

Ric*_*d E 4

尝试将第二个更改RowDefinition为以下内容:

<RowDefinition MinHeight="250" MaxHeight="{Binding ElementName=grid_main, Path=ActualHeight}" Height="250"/>
Run Code Online (Sandbox Code Playgroud)

这将确保行高不会超过窗口大小。