折叠网格列不能以编程方式工作

时间:2016-10-28 21:49:51

标签: c# uwp

我正在使用通用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>

我有一个按钮,可以完成一些操作,完成操作后,我想隐藏第一列,第二列我要填充整个窗口。

我这样做了:

  private async void DisplaySomething_Click( object sender, RoutedEventArgs e )
  {
     if( string.IsNullOrWhiteSpace( City.Text ) ) {
        return;
     }

     // do some stuff

     Column0.Visibility = Visibility.Collapsed;
     Column1.Width = MyPage.ActualWidth;
  }

但显然第二列不能自动适应整个窗口宽度。它甚至保留相同的宽度,即使第一列折叠,第二列具有*列宽

为什么?哪里是我的错?

1 个答案:

答案 0 :(得分:0)

  

<ColumnDefinition Width="400"></ColumnDefinition>

第一列未折叠,因为它仍然将Width设置为400.当您折叠第一列的内容时,您必须将其Width设置为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>

<强> C#:

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