我有一个Grid
有两列的。我想隐藏第二列,直到有人点击Button
第一列中的 a。问题是:
如果我在第二列上将可见性设置为折叠,则不会显示该元素,并且不会在布局中为其保留空间,导致第二列可见时网格不居中。
如果我将可见性设置为隐藏,则不会显示元素,而是为布局中的元素保留空间,使其居中,但在第 1 列可见而第 2 列不可见时显示我不想要的保留空间。
我想要介于两者之间的东西。例如,仅显示第一列并将整个网格居中。当第二列也显示时,再次将整个网格居中。
这有意义吗?
XAML
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Label Content="Show second column on grid" Width="300"
FontStyle="Italic"
FontWeight="Bold"
Grid.Column="0"
Grid.Row="0"
HorizontalAlignment="center"
Foreground="White"/>
<Button Content="Click Me"
Width="75"
Margin="5"
Grid.Column="0"
Grid.Row="1" Click="Button_Click" />
<StackPanel x:Name="showSecondColumn"
Grid.Column="1"
Grid.Row="0"
Grid.RowSpan="2"
Margin="5,0,0,0"
Orientation="Vertical"
Background="Red" Visibility="Collapsed">
<Label Content="Second column is shown"
Background="Red" />
<Label Content="Another item inside second column"
BorderBrush="Red"
BorderThickness="3"
Margin="0,5"
Background="White" />
</StackPanel>
</Grid>
Code behind
private void Button_Click(object sender, RoutedEventArgs e)
{
showSecondColumn.Visibility = Visibility.Visible;
}