【发布时间】:2011-05-18 16:11:07
【问题描述】:
编辑:我几乎重写了整个问题,因为我意识到这个问题不正确且令人困惑。我为此道歉,但这个问题的假设不正确,无法回答。我最初试图简化它以使其更易于理解,但这使得我无法复制我的问题。
如果我在ScrollViewer 中有一个DataGrid 和一个MinHeight,我希望随着我的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 页面上有嵌套的滚动条(我觉得这很恶心,但它不在我的控制范围内)。这个想法是顶级滚动条是某种“最后的手段”。
【问题讨论】:
-
你能发布你的元素模板的 XAML 吗?我猜原因可能是内容让它比你想要的高。
标签: wpf xaml silverlight-4.0 scrollviewer