我使用以下代码创建带有网格的3列布局。
<Window x:Class="WpfApplication21.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Column="0" Background="Aqua"></Grid>
<Grid Column="1" Background="Red"></Grid>
<Grid Column="2" Background="Yellow"></Grid>
</Grid>
</Window>
我不理解的部分是,当我将第三个网格的Visibility
设置为Collapsed
时,它所占用的空间仍然存在。我希望将剩余的空间添加到其他两个网格中。
<Grid Column="2" Background="Yellow" Visibility="Collapsed"></Grid>
答案 0 :(得分:3)
你告诉Grid
将自己平分为3个部分,你需要将最后一列设置为Auto
宽度以达到你想要的效果(使最后一列与其宽度相匹配)含量):
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
答案 1 :(得分:1)
由于您只隐藏了Grid的ColumnDefinition,但实际上并没有隐藏Grid。
您可以执行以下操作:要隐藏第三列,您需要将列的宽度设置为&#34; 0&#34;
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition x:Name="TestColumn" Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Column="0" Background="Aqua"></Grid>
<Grid Column="1" Background="Red"></Grid>
<Button Grid.Column="2" Click="hideColumn">hideColumn</Button>
</Grid>
private void hideColumn(object sender, RoutedEventArgs e)
{
this.TestColumn.Width = new GridLength(0, GridUnitType.Pixel);
}