繁体   English   中英

StackPanel高度超过父网格高度

[英]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的高度高于其父innerGridinnerGrid高度。

我在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM