我对WPF来说还比较陌生,所以如果对此有一个简单的解决方案,对不起,请您提前谅解。但是,我试图将StackPanel的高度绑定到其包含的Grid。我知道StackPanel会自动调整大小以适合其元素,但我想将其绑定到Grid,以便它不会这样做。现在,堆栈面板不会随窗口调整大小,因为它仍然是 大小以适应其元素。
这是我到目前为止所拥有的:
<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>
我尝试将“ SidePanel”的高度绑定到“ MainGrid”的实际高度,但是当我运行此代码并检查元素时,Grid会随窗口调整大小,而StackPanel不会。 StackPanel和Grid甚至具有不同的高度,这对我来说没有意义,因为它们的高度应该绑定在一起。
我还尝试将整个StackPanel包裹在边界中并绑定到边界,但这也没有用。
答案 0 :(得分:1)
您不需要绑定StackPanel的高度,只需将其VerticalAlignment设置为Stretch即可。但是...您仍然不会得到我想您想要的。 StackPanel仅堆叠其子控件,它不会调整它们(至少不在“堆叠”方向上)。考虑使用诸如Grid或UniformGrid之类的其他控件,或者只是扩展现有网格以包含行和列。