我正在使用通用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;
}
但显然第二列不能自动适应整个窗口宽度。它甚至保留相同的宽度,即使第一列折叠,第二列具有*
列宽
为什么?哪里是我的错?
答案 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);
}