Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 居中网格,隐藏列宽而不保留空间_C#_Wpf_Grid - Fatal编程技术网

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;
}