Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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# 在WPF中折叠网格_C#_Wpf_Grid - Fatal编程技术网

C# 在WPF中折叠网格

C# 在WPF中折叠网格,c#,wpf,grid,C#,Wpf,Grid,我正在使用下面的代码创建一个带有网格的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"

我正在使用下面的代码创建一个带有网格的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>

因为您只隐藏网格的列定义,但实际上并没有隐藏网格

可以这样做,要隐藏第三列,需要将列的宽度设置为“0”


隐藏柱
私有void hideColumn(对象发送方,RoutedEventArgs e)
{
this.TestColumn.Width=新的GridLength(0,GridUnitType.Pixel);
}

您告诉
网格
要将其平均分成3部分,您需要将最后一列设置为
自动
宽度以实现您想要的(使最后一列与其内容的宽度相匹配):


Thank Sajeetharan的可能重复,您的答案也有效,但Bolu建议的答案也不使用代码。
<Grid Column="2" Background="Yellow" Visibility="Collapsed"></Grid>
   <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);
        }
<Grid.ColumnDefinitions>
      <ColumnDefinition Width="*"></ColumnDefinition>
      <ColumnDefinition Width="*"></ColumnDefinition>
      <ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>