C# 按编程方式折叠轴网柱不起作用

C# 按编程方式折叠轴网柱不起作用,c#,uwp,C#,Uwp,我正在使用通用Windows应用程序WPF为Raspberry PI开发一个UI 我必须: <Grid.ColumnDefinitions> <ColumnDefinition Width="400"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <Grid C

我正在使用通用Windows应用程序WPF为Raspberry PI开发一个UI

我必须:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="400"></ColumnDefinition>
    <ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>

<Grid Column="0" name="Column0">
  ...
</Grid>

<Grid Column="1" name="Column1">
  ...
</Grid>
但显然,第二列并不能自动适应整个窗口的宽度。即使第一列折叠,第二列具有
*
列宽,它也会保持相同的宽度

为什么??我的错在哪里

第一列未折叠,因为其宽度仍设置为400。折叠第一列内容时,必须将其
宽度设置为0,以便第二列自动扩展为全宽

正如@Mogzol所说,在设置控件将显示在哪个列时,应该使用附加的属性
Grid.Column

XAML:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition x:Name="CD_Column0" Width="400"></ColumnDefinition>
        <ColumnDefinition x:Name="CD_Column1" Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>

    <Grid x:Name="Gr_Column0" Grid.Column="0">
        ...
    </Grid>

    <Grid x:Name="Gr_Column1" Grid.Column="1">
        ...
    </Grid>
</Grid>
private async void DisplaySomething_Click( object sender, RoutedEventArgs e )
{
    if( string.IsNullOrWhiteSpace( City.Text ) ) {
        return;
    }

    // do some stuff

    Gr_Column0.Visibility = Visibility.Collapsed;
    CD_Column0.Width = new GridLength(0);
}

由于
Column1
具有
*
宽度,因此不应将其设置为
MyPage.ActualWidth
,一旦折叠
Column0
它应该只填充所有网格空间,
不存在
网格。Column
,只存在
private async void DisplaySomething_Click( object sender, RoutedEventArgs e )
{
    if( string.IsNullOrWhiteSpace( City.Text ) ) {
        return;
    }

    // do some stuff

    Gr_Column0.Visibility = Visibility.Collapsed;
    CD_Column0.Width = new GridLength(0);
}