要使三列宽度相同,需要将Width
设置为Auto
。
<Grid x:Name="myGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0">One</Label>
<Label Grid.Row="0" Grid.Column="1" x:Name="label1">Two</Label>
<Label Grid.Row="0" Grid.Column="2">Three</Label>
</Grid>
我希望实现的效果是,如果中间列被折叠或隐藏,其他两列将占据剩余空间并获得相等的宽度。
如果我只是将可见性设置为折叠或隐藏,由于宽度="*",其他两列的宽度保持不变。
<Label Grid.Row="0" Grid.Column="1" Visibility="Collapsed">Two</Label>
我通过编程将第二列的宽度设置为自动来实现所需功能,但我正在寻找其他解决方案(最好是一种XAML方式的解决方案)。
private void Button_Click(object sender, RoutedEventArgs e)
{
this.myGrid.ColumnDefinitions[1].Width = GridLength.Auto;
this.label1.Visibility = Visibility.Collapsed;
}