编辑:我正在重写几乎整个问题,因为我意识到问题是不正确和混淆的。对此我感到抱歉,但这个问题有不正确的假设,使得它无法回答。我最初试图简化它以使其更容易理解,但这使得复制我的问题变得不可能。
如果我在ScrollViewer
中有一个带有MinHeight
的DataGrid
,我期望随着我的ViewPort缩小,元素的ActualHeight
将减小,直到它达到MinHeight
之前出现滚动条。
然而,似乎当数据网格的行累计高度超过MinHeight
时,此值会覆盖MinHeight。
有没有一种方法可以在没有手动调整大小和大量代码的情况下实现这一点?
示例:
<ScrollViewer VerticalScrollBarVisibility="Auto" Background="Red">
<Grid x:Name="LayoutRoot" Background="Black" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition MinHeight="20"/>
<RowDefinition Height="80"/>
</Grid.RowDefinitions>
<sdk:DataGrid AutoGenerateColumns="True" Name="dataGrid1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" MinHeight="20" />
<Rectangle Fill="Blue" Width="100" Height="80" Grid.Row="1" />
</Grid>
</ScrollViewer>
如果您向此网格填充一些行,如果您最大化窗口,则该网格占用大部分空间,并在行之后留有空白。如果您将其缩小,布局会减少空白空间,直到该空间用尽,然后根级别的
ScrollViewer
启动,即使 MinHeight
尚未达到。如果您使用另一个矩形替换
DataGrid
,则行为会有所不同(显然)。新矩形将缩小到高度20。如何使用网格实现这一点?我的要求是在我的SL页面上具有嵌套滚动条(我觉得这很讨厌,但这不在我的控制范围内)。想法是顶层滚动条是“最后的手段”。