我有一个UserControl,上面有两个不同的UserControl。通常,GridPanel会在控件之间使用拆分器来完成其工作。 现在,如果其中一个控件被折叠 - 通过数据绑定到父UserControl上的设置 - 另一个应该延伸到可用空间......当然,反之亦然。
尝试 - 并且失败 - 解决方案:
的GridPanel: 仍然可见的控件不会拉伸,因为折叠控件的行仍然存在。
DockPanel中: 有可能折叠顶部对接控件,这将导致填充控件拉伸......但不是另一种方式。
是否有一种简单的方法来实现所描述的行为?
答案 0 :(得分:0)
您可以控制容器以获得所需的行为。 当两个项目都显示时,您可以这样做:
<RowDefinition Height="*" />
<RowDefinition Height="*" />
如果您只希望显示一个,请将其更改为:
<RowDefinition Height="*" />
<RowDefinition Height="0" />
当你想让另一个人表明你这样做时:
<RowDefinition Height="0" />
<RowDefinition Height="*" />
对于优雅的解决方案,您可以将高度绑定到控件的可见性值。然后创建一个转换器,如果可见性是折叠的,则返回高度0;如果可见性是可见的,则返回*:
<Grid Height="200" Width="200">
<Grid.RowDefinitions>
<RowDefinition Height="{Binding ElementName=TopControl, Path=Visibility, Converter={StaticResource VisibilityToHeightConverter}}" />
<RowDefinition Height="{Binding ElementName=BottomControl, Path=Visibility, Converter={StaticResource VisibilityToHeightConverter}}" />
</Grid.RowDefinitions>
<ContentControl Name="TopControl" />
<ContentControl Name="BottomControl" Grid.Row="1" />
</Grid>