具有行高 * 的 WPF 网格 * 未扩展到网格的最大高度



我的WPF网格有3行(Auto、*、*(,最大高度设置为500。当第二行或第三行没有内容时,网格仍然不会扩展到其最大高度。

XAML代码:

<Grid MaxHeight="500">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- Button occupies 30 px-->
<Button Grid.Row="0" Content="SwitchGrid"/>
<ContentControl Grid.Row="1" Content="{Binding DG1}"/>
<ContentControl Grid.Row="2" Content="{Binding DG2}"/>
</Grid>

问题说明:

  • [Success]如果同时提供了两个ContentControls,它们将占据相等的空间(~230px(,并且网格显示为扩展到MaxHeight=500px
  • [失败]如果其中一个ContentControls未提供,则另一个contentcontrol仍然占据最大值~230 px(此contentcontrol可以占据500 px,但由于网格的限制,它只占据230 px并显示滚动条(,并且网格不会扩展到500 px。Snoop显示其中一个控件控件大小为0,但看起来Grid仍在为其保留空间。即使Grid直接放置在MainWindow内,我也看到过这种行为,因此我认为它与任何其他容器都无关

如果网格的任何子级需要,我该怎么做才能确保网格扩展到MaxHeight?

谢谢,

RDV

您可以将行高绑定到字符串属性。。

<Grid MaxHeight="500">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="{Binding Row1Height, FallbackValue=*}"/>
<RowDefinition Height="{Binding Row2Height, FallbackValue=*}"/>
</Grid.RowDefinitions>
<!-- Button occupies 30 px-->
<Button Grid.Row="0" Content="SwitchGrid"/>
<ContentControl Grid.Row="1" Content="{Binding DG1}"/>
<ContentControl Grid.Row="2" Content="{Binding DG2}"/>
</Grid>

然后你可以随时更新它,例如。。

public DG1 DG1 {
set{
// ..
Row1Height = value == null ? "0" : "*";
}
get{
// ..
}
}

相关内容

  • 没有找到相关文章

最新更新