Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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
如何将StackPanel的高度绑定到WPF中包含网格的高度?_Wpf_Xaml - Fatal编程技术网

如何将StackPanel的高度绑定到WPF中包含网格的高度?

如何将StackPanel的高度绑定到WPF中包含网格的高度?,wpf,xaml,Wpf,Xaml,我对WPF比较陌生,所以如果有一个简单的解决方案,我很抱歉。但是,我试图将StackPanel的高度绑定到其包含的网格。我知道StackPanel会自动调整大小以适应其元素,但我希望将其绑定到网格,这样它就不会这样做。现在,堆栈面板不随窗口调整大小,因为它仍然保持不变 它需要调整大小以适合其元素 以下是我到目前为止的情况: <Grid x:Name="MainGrid" Grid.Row="2" Margin="1" Drop="Grid_Drop" AllowDrop="T

我对WPF比较陌生,所以如果有一个简单的解决方案,我很抱歉。但是,我试图将StackPanel的高度绑定到其包含的网格。我知道StackPanel会自动调整大小以适应其元素,但我希望将其绑定到网格,这样它就不会这样做。现在,堆栈面板不随窗口调整大小,因为它仍然保持不变 它需要调整大小以适合其元素

以下是我到目前为止的情况:

<Grid x:Name="MainGrid" Grid.Row="2" Margin="1" Drop="Grid_Drop" 
      AllowDrop="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="175"/>
        <ColumnDefinition Width="5"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <StackPanel x:Name="SidePanel" Grid.Column="0" Height="{Binding 
                ActualHeight, ElementName=MainGrid, Mode=OneWay}">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition/>
            </Grid.RowDefinitions>
        <local:DeviceTreeView x:Name="deviceTree" PyngInfo="{Binding 
                              PyngSystemVm.PyngInfo}" Grid.Row="0"/>

    </StackPanel>

    <-- There is more code here but it is not important for answering this 
        question -->

</Grid>

我尝试将“侧面板”的高度绑定到“主网格”的实际高度,但当我运行此代码并检查元素时,网格会随窗口调整大小,但StackPanel不会。StackPanel和网格甚至有不同的高度,这对我来说没有意义,因为它们的高度应该绑定在一起


我还尝试将整个StackPanel包装在边框中并绑定到边框上,但这也不起作用。

您不需要绑定StackPanel的高度,只需将其垂直对齐设置为“拉伸”即可。然而。。。你还是得不到我认为你想要的。StackPanel仅堆叠其子控件,不调整它们(至少不在“堆叠”方向)。考虑使用不同的控件,如Grid或UniformGrid,或者只扩展现有的网格以包含行和列。

最简单的答案:根本不要使用
StackPanel
。如果您想水平/垂直堆叠,请使用带有多个
列定义的
网格
。“我是如此的有远见,以至于我甚至没有想到这点。@FrankCusano,你也可以使用垂直/水平对齐/内容对齐来拉伸,以填充内部控件所在的任何外部控件。”。