Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 堆栈面板高度超过父网格高度_C#_Wpf_Xaml - Fatal编程技术网

C# 堆栈面板高度超过父网格高度

C# 堆栈面板高度超过父网格高度,c#,wpf,xaml,C#,Wpf,Xaml,我有这样的情况: <UserControl> <Grid x:Name="fullGrid" VerticalAlignment="Stretch"> <Grid.RowDefinitions> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid x:Name="innerGrid" Ver

我有这样的情况:

<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
高度

我在Snoop中调试它,StackPanel似乎忽略了它的
VerticalAlignment
属性

我希望避免设置
Heigh={Binding ElementName=xxx,Path=ActualHeight}
,因为我的内部有一些额外的
边距,这会破坏视图


我如何处理这个问题?

ScrollViewer
填充它的父对象
StackPanel
希望根据其子对象的大小调整大小,并告诉他们有自己想要的空间(然后“缩小以适应”)

因此,
StackPanel
告诉
ScrollViewer
它可以拥有世界上所有的空间,而这正是它所乐于拥有的。除了按照您的描述进行绑定或设置绝对高度之外,没有其他方法可以阻止这种情况


因此,简单的解决方案是:移除
StackPanel
。然后,
ScrollViewer
将占用
网格
分配给它的空间。

首先在堆栈面板中包装滚动查看器有什么特殊原因吗?基本的答案是你不能这样做,但是有解决办法没有理由包装ScrollViewer。移除它是有效的!你能给我解释一下它的原理吗?基本上StackPanel需要通过它的孩子来确定它的大小。现在,它内部的ScrollViewer不报告大小,但需要它的父级报告ScrollViewer将自行调整的大小。由于这两个控件都没有得到它所需要的,因此它们无法按应有的方式调整大小/渲染。