C# 居中网格,隐藏列宽而不保留空间
我有一个带有两列的C# 居中网格,隐藏列宽而不保留空间,c#,wpf,grid,C#,Wpf,Grid,我有一个带有两列的网格。我想隐藏第二列,直到有人单击第一列中的按钮。问题是: 如果在第二列上将“可见性”设置为“折叠”,则不会显示该图元,也不会在布局中为其保留空间,从而导致在第二列可见时栅格不居中 如果将可见性设置为“隐藏”,则不会显示元素,而是在布局中为元素保留空间,使其居中,但会显示保留空间,当第1列可见而第2列不可见时,我不希望这样做 我想要介于两者之间的东西。例如,仅显示第一列并使整个轴网居中。同时显示第二列时,再次将整个轴网居中 这有意义吗 XAML <Grid>
网格
。我想隐藏第二列,直到有人单击第一列中的按钮。问题是:
如果在第二列上将“可见性”设置为“折叠”,则不会显示该图元,也不会在布局中为其保留空间,从而导致在第二列可见时栅格不居中
如果将可见性设置为“隐藏”,则不会显示元素,而是在布局中为元素保留空间,使其居中,但会显示保留空间,当第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>
试试另一种方法怎么样?
您可以有两列,一列带有width=“*”
(这样它就占用了所有可用空间),并将第二列的宽度设置为width=“Auto”
。
然后在第二列中,可以放置控件/容器,默认情况下,可见性
设置为折叠
。单击按钮,您可以根据需要进行切换。如果可能,您可以共享代码,以便查看您实际尝试的内容。您好,我现在知道您到底在尝试什么。只需为两列设置Width=“Auto”
,它就会始终居中。
private void Button_Click(object sender, RoutedEventArgs e)
{
showSecondColumn.Visibility = Visibility.Visible;
}