[英]StackPanel height exceed parent Grid height
我有这样的情况:
<UserControl>
<Grid x:Name="fullGrid" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid x:Name="innerGrid" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel x:Name="leftSide" VerticalAlignment="Stretch">
<ScrollViewer VerticalAlignment="Stretch">
<ItemsControl/ VerticalAlignment="Stretch">
</ScrollViewer>
</StackPanel>
</Grid>
</Grid>
</UserControl>
问题在于leftSide
stackPanel的高度高于其父innerGrid
: innerGrid
高度。
我在Snoop中调试它,看来StackPanel只是忽略了它的VerticalAlignment
属性。
我想避免设置Heigh={Binding ElementName=xxx, Path=ActualHeight}
因为我里面有一些额外的Margins
,这会破坏视图。
我该如何处理?
ScrollViewer
填充其父级。 StackPanel
希望根据孩子的大小调整大小,因此告诉他们他们拥有所需的空间(然后“缩小以适合”)。
因此, StackPanel
告诉ScrollViewer
它可以拥有世界上所有它愉快地占用的空间。 除了按照您描述的方式进行绑定或设置绝对高度之外,没有其他方法可以阻止这种情况。
因此,简单的解决方案是:删除StackPanel
。 然后, ScrollViewer
将占用Grid
为其分配的空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.