你有一个包含2个对象的简单网格,每列一个:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Rectangle Fill="Blue" Grid.Column="0" />
<Rectangle Fill="Red" Grid.Column="1" />
</Grid>
我想要什么:设置&#34;可见性=倒塌&#34;无论是红色还是蓝色矩形,另一个占据了所有剩余的空间。
我可以使用网格控件吗?
由于
答案 0 :(得分:3)
使用StackPanel
或DockPanel
等其他面板可以轻松实现这一目标。
但是如果您只对网格方法感兴趣,可以使用DataTrigger
查看其他矩形是Collapsed
,然后将Grid.ColumnSpan
设置为2
可见矩形。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Rectangle Fill="Blue" Grid.Column="0" x:Name="blueRectangle">
<Rectangle.Style>
<Style TargetType="Rectangle">
<Style.Triggers>
<DataTrigger Binding="{Binding Visibility,
ElementName=redRectangle}" Value="Collapsed">
<Setter Property="Grid.ColumnSpan" Value="2"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
<Rectangle Fill="Red" Grid.Column="1" x:Name="redRectangle">
<Rectangle.Style>
<Style TargetType="Rectangle">
<Style.Triggers>
<DataTrigger Binding="{Binding Visibility,
ElementName=blueRectangle}" Value="Collapsed">
<Setter Property="Grid.ColumnSpan" Value="2"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
</Grid>
答案 1 :(得分:0)
我知道这是一个便宜的技巧,但确实有效:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Fill="Red" Grid.Column="0" />
<Rectangle Fill="Blue" Grid.Column="1" />
<Rectangle Fill="Blue" Grid.Column="0" />
<Rectangle Fill="Red" Grid.Column="1" />
</Grid>